[英]How to call a method with arguments of different types using reflection in C#
[英]How to call Method of Private Property using Reflection in c#?
我的項目有一些問題。
我想從private
屬性中調用一種方法,例如private clsBUS_DEMO prop_DEMO
clsBUS_DEMO
有一個方法,其名稱為public void SayHello()
。
這是我的代碼
PropertyInfo p = this.GetType().GetProperty("SayHello");
p
為null
因為程序找不到prop_DEMO
有人可以幫我嗎?
調用私有財產的方法? 不知道我是否了解您想要什么,擁有代表您的對象的類將很有用。 您的意思是調用返回一個對象的屬性,然后調用該對象的方法嗎?
無論如何,我認為關於該主題的信息很多,例如: 如何使用反射來調用私有方法? 通過反射找到私人領域?
class MyClass1
{
public MyClass1()
{
Prop = new MyClass2();
}
public MyClass2 Prop { get; set; }
}
class MyClass2
{
private int Test()
{
return 5;
}
}
static void Main(string[] args)
{
var obj = new MyClass1();
var obj2 = obj.Prop;
var propInfo = obj.GetType().GetProperty("Prop");
var obj2Reflection = propInfo.GetValue(obj, null);
var dynMethod = obj2.GetType().GetMethod("Test", BindingFlags.NonPublic | BindingFlags.Instance);
var obj2Return = dynMethod.Invoke(obj2, null);
}
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!");
}
}
大家好!
我受夠了 :)
我只是創建Property get{}
set{}
並使用此代碼:D
PropertyInfo p = this.GetType()。GetProperty(“ LoaiSP_BUS”,BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
謝謝大家!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.