如何在另一个程序集中获取内部静态类的类?

Ech*_*ban 5 .net reflection

我在Assembly A中有一个C类,如下所示:

internal class C
{
  internal static string About_Name {
      get { return "text"; }
  ...
}
Run Code Online (Sandbox Code Playgroud)

我有大约20个这样的静态属性.有没有办法,在外部程序集中,不使用友元汇编属性(仅限.Net反射),获取类C所以我可以调用任何静态字符串属性,如下所示:

Class C = <some .Net reflection code>;
string expected = C.About_Name;
Run Code Online (Sandbox Code Playgroud)

如果这是不可能的,直接获取字符串属性值的.Net反射代码就足够了,但并不理想.

Jen*_*und 5

试试这个...
编辑:当它是一个静态属性时,我没有想到只使用类型而不是对象实例.
删除 var obj = Activator.CreateInstance(type);type在prop.GetValue中使用而不是obj.

namespace ClassLibrary1
{
    internal class Class1
    {
        internal static string Test { get { return "test"; } }
    }
    public class Class2
    {

    }
}

var ass = Assembly.GetAssembly(typeof(Class2));
var type = ass.GetType("ClassLibrary1.Class1");
var prop = type.GetProperty("Test", BindingFlags.Static 
    | BindingFlags.NonPublic);
var s = (string)prop.GetValue(type, null);
Run Code Online (Sandbox Code Playgroud)