【学步者日记】C#反射中NonPublic和Instance需要一起使用
完整链接请看:
http://note.youdao.com/noteshare?id=f378d9a414e46893b0e300b017ed3655
————————————————————————
如果在 BindingFlag 中使用 NonPublic/Public 时必须同时(我在看别人的教程时候并没有强调同时)使用 Static/Instance 否则将会返回null。
参考代码
▼代码开始
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DreamSchool_LRNCS
{
class Program
{
private void fun()
{
Console.Write("ds_fun");
}
static void Main(string[] args)
{
AA.C1 newC1Instance = new AA.C1();
var funM = newC1Instance.GetType().GetMethod("fun", System.Reflection.BindingFlags.NonPublic| System.Reflection.BindingFlags.Instance);
object[] para = { };
if(funM==null)
{
Console.Write("error, funM is null");
}
else
funM.Invoke(newC1Instance, para);
Console.Read();
}
}
}
namespace AA
{
public class C1
{
private void fun()
{
Console.Write("C1 fun");
}
}
}
namespace BB
{
public class C2
{
public void fun()
{
Console.Write("c2 fun");
}
}
}
▲代码结束