Как преобразовать объект в Func, где TIn, TOut — известные типы во время выполнения? ⇐ C#
-
Anonymous
Как преобразовать объект в Func, где TIn, TOut — известные типы во время выполнения?
публичный статический класс PropertyAccessor { общедоступное статическое выражение Create(string propertyName) { свойство var = typeof(T).GetProperty(propertyName); если (свойство равно нулю) { вернуть ноль; } результат вар = typeof(PropertyAccessor).GetMethod(nameof(CreateExpression))! .MakeGenericMethod(typeof(T, property.PropertyType) .Invoke(null, новый объект[] {propertyName}); } частное статическое выражение CreateExpression(string propertyName) { параметр var = Expression.Parameter(typeof(TIn)); var body = Expression.Property(параметр, имя_свойства); return Expression.Lambda(тело, параметр); } } Я пытался выполнить приведение с помощью Convert и других средств, но, не зная TIn и TOut во время компиляции, приведение невозможно
публичный статический класс PropertyAccessor { общедоступное статическое выражение Create(string propertyName) { свойство var = typeof(T).GetProperty(propertyName); если (свойство равно нулю) { вернуть ноль; } результат вар = typeof(PropertyAccessor).GetMethod(nameof(CreateExpression))! .MakeGenericMethod(typeof(T, property.PropertyType) .Invoke(null, новый объект[] {propertyName}); } частное статическое выражение CreateExpression(string propertyName) { параметр var = Expression.Parameter(typeof(TIn)); var body = Expression.Property(параметр, имя_свойства); return Expression.Lambda(тело, параметр); } } Я пытался выполнить приведение с помощью Convert и других средств, но, не зная TIn и TOut во время компиляции, приведение невозможно
Мобильная версия