我的项目有些问题。
我想从private
属性中调用一个方法,例如private clsBUS_DEMO prop_DEMO
clsBUS_DEMO
有一个方法,名称为public void SayHello()
。
这是我的代码
PropertyInfo p = this.GetType().GetProperty("SayHello");
p
为null
,因为程序无法找到prop_DEMO
有人可以帮我这个吗?
答案 0 :(得分:0)
调用私有财产的方法?不确定我是否理解了你想要的东西,让代表你的对象更有用。你的意思是调用一个返回一个对象的属性然后调用该对象的方法吗?
无论如何,我认为那里有很多关于该主题的信息,例如: Find a private field with Reflection? http://deltanorge.cloudapp.net/
%
答案 1 :(得分:0)
clsBUS_DEMO prop_DEMO
不是属性,而是Field
。您需要使用GetFields来获取它,并且因为private
您需要通过BindingFlags.NonPublic
和BindingFlags.Instance
。
以下是您应该如何做的示例
static void Main(string[] args)
{
Bar bar = new Bar();
Foo foo = (Foo)bar.GetType().GetField("a", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(bar);
foo.GetType().GetMethod("ShowMessage").Invoke(foo,new object[] { });
}
public class Bar
{
private Foo a;
public Bar()
{
a = new Foo();
}
}
public class Foo
{
public void ShowMessage()
{
Console.WriteLine("Hello World!");
}
}
答案 2 :(得分:0)
好的伙计们!
我已经完成了:)
我只是创建属性get{}
set{}
并使用此代码:D
PropertyInfo p = this.GetType()。GetProperty(“LoaiSP_BUS”,BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
全部谢谢!