如何在没有具体实例的情况下使用Reflection来获取Type的静态属性的值

Ste*_*lan 9 c# asp.net generics reflection

考虑以下课程:

public class AClass : ISomeInterface
{
    public static int AProperty
    {
   get { return 100; } 
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有另一个课程如下:

public class AnotherClass<T>
   where T : ISomeInterface
{

}
Run Code Online (Sandbox Code Playgroud)

我通过以下方式实例:

AnotherClass<AClass> genericClass = new  AnotherClass<AClass>();
Run Code Online (Sandbox Code Playgroud)

如何在没有具体的AClass实例的情况下从我的genericClass中获取AClass.AProperty的静态值?

Vla*_*lad 10

就像是

typeof(AClass).GetProperty("AProperty").GetValue(null, null)
Run Code Online (Sandbox Code Playgroud)

会做.别忘了施展int.

文档链接:http://msdn.microsoft.com/en-us/library/b05d59ty.aspx(他们也有静态属性的例子.)但如果你确切知道AClass,你可以使用AClass.AProperty.

如果你在里面AnotherClass<T>T = AClass,你可以称其为T:

typeof(T).GetProperty("AProperty").GetValue(null, null)
Run Code Online (Sandbox Code Playgroud)

如果你确定你T有静态属性,这将有效AProperty.如果无法保证任何此类属性存在T,则需要在途中检查返回值/异常.

如果只AClass对你感兴趣,你可以使用类似的东西

if (typeof(T) == typeof(AClass))
    n = AClass.AProperty;
else
    ???
Run Code Online (Sandbox Code Playgroud)