gpt4 book ai didi

c# - 如何动态使用 PropertyType 反射属性来创建相应的类型化 Function<>?

转载 作者:太空宇宙 更新时间:2023-11-03 22:21:58 26 4
gpt4 key购买 nike

我想使用 PropertyType 返回的类型来创建类型化函数。我发现这个相似 using type returned by Type.GetType() in c#但这提到了如何创建一个列表,但没有提到我们如何创建一个 Func<>。请帮帮我。

伪代码:

PropertyInfo inf = typeof(SomeClass).GetProperty("PropertyName");
Type T=inf.PropertyType;
Expression<Func<SomeClass,T>> le = GetPropertyOrFieldByName<SomeClass,T>("PropertyName");

static Expression<Func<TSource, TResult>> GetPropertyOrFieldByName<TSource,TResult>(string propertyOrFieldName)
{
ParameterExpression item = Expression.Parameter(typeof(TSource), "expr");MemberExpression prop = LambdaExpression.PropertyOrField(item, propertyOrFieldName);
var expr = Expression.Lambda<Func<TSource, TResult>>(prop, new ParameterExpression[] { item });
expr.Compile();
return expr;
}

最佳答案

如果您想使用 PropertyType 调用 GetPropertyOrFieldByName,这应该可行:

PropertyInfo inf = typeof(SomeClass).GetProperty("PropertyName");
Type T = inf.PropertyType;

object le =
typeof([TypeThatDeclaresMethod]).GetMethod("GetPropertyOrFieldByName")
.MakeGenericMethod(typeof(SomeClass), T)
.Invoke(null, new object[] { "PropertyName" });

假设 GetPropertyOrFieldByName 方法是一个公共(public)静态方法。

关于c# - 如何动态使用 PropertyType 反射属性来创建相应的类型化 Function<>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2775812/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com