gpt4 book ai didi

c# - 在 C# 中的 nestedProperty 上使用 InvokeMember

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:06 25 4
gpt4 key购买 nike

我想使用 InvokeMember 方法继续执行 List 上的 OrderBy,但它在简单类型(字符串、日期时间等...)上工作正常,但在嵌套类型上失败...

这里是我的代码:

System.Reflection.PropertyInfo property = typeof(myType).GetProperty(e.SortExpression);
gridView.DataSource = myList.OrderBy(item => typeof(myType).InvokeMember(property.Name, System.Reflection.BindingFlags.GetProperty, null, item, null));
gvOrders.DataBind();

我需要这样的东西:

System.Reflection.PropertyInfo property = typeof(myType).GetProperty(e.SortExpression);
gridView.DataSource = myList.OrderBy(item => typeof(myType).InvokeMember(property.GetNestedProperty("something").Name, System.Reflection.BindingFlags.GetProperty, null, item, null));
gvOrders.DataBind();

欢迎所有的建议:)

最佳答案

如果我对你的问题的理解正确,那么你正在尝试获取类型不是 myType 的属性。

public class Foo
{
public Foo()
{
SomeBar = new Bar();
}

public class Bar
{
public string SomeProperty { get; set; }
}

public Bar SomeBar { get; set; }
}

您需要使用 Type.GetNestedTypeType.GetNestedTypes提取内部类型。

var foo = new Foo();
foo.SomeBar.SomeProperty = "Hello";

var someProperty = typeof(Foo).GetNestedType("Bar").GetProperty("SomeProperty");

Console.WriteLine(someProperty.GetValue(foo.SomeBar));

使用您的代码:

PropertyInfo property = typeof(myType).GetNestedTypes()
.First()
.GetProperty(e.SortExpression);

关于c# - 在 C# 中的 nestedProperty 上使用 InvokeMember,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17811072/

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