我在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反射代码就足够了,但并不理想.
试试这个...
编辑:当它是一个静态属性时,我没有想到只使用类型而不是对象实例.
删除 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)