gpt4 book ai didi

c# - 通过反射获取接口(interface)属性

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

我广泛使用 foovar.GetType().GetProperty("PropertyName").GetValue(foovar) 通过反射获取变量变量的属性值。但它似乎不适用于接口(interface)类型。

IFoo foo = GetFoo();
string fooName= foo.Name; //It works perfectly

我正在与第三方程序集合作,因此我无权访问该实现。有一个“名称”属性,我可以获取该值。但是不能通过反射。

当我尝试 string s = (string)foo.GetType().GetProperty("Name").GetValue(foo); 时,我得到一个空错误:没有 'Name' 属性

我检查了 PropertyInfo[] pi = foo.GetType().GetProperties();,我可以看到大约 200 个属性,其中没有一个是“名称”。事实上,许多其他“智能感知属性”并未显示。

¿如何检索接口(interface)类型的属性值?

谢谢!

最佳答案

返回的对象可能显式实现IFoo,因此Name 属性将是私有(private)的。您可以改用接口(interface)类型:

object property = typeof(IFoo).GetProperty("Name").GetValue(foo);

编辑:如果这不起作用,那么我只能假设该属性实际上是在 IFoo 实现的某个其他接口(interface)上定义的,例如

public interface IBase
{
string Name { get; }
}

public interface IFoo : IBase
{
}

在这种情况下,您需要找到声明 Name 的实际接口(interface)并使用它。

关于c# - 通过反射获取接口(interface)属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18419231/

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