比如
abstract class b{
protected abstract void m();
protected void s();}
class c : b
{
public override void m(){}}使用方法
Assembly assembly = Assembly.LoadFrom(assemblyName);
Type type = assembly.GetType(className);
object instance = Activator.CreateInstance(type,parameters,null);在vs里面监视 发现 instance里面看不到 m 和 s
所以 在调用的时候
type.InvokeMember(methodName, BindingFlags.Instance ,null ,instance ,null)
抛异常了请大虾指教!!
abstract class b{
protected abstract void m();
protected void s();}
class c : b
{
public override void m(){}}使用方法
Assembly assembly = Assembly.LoadFrom(assemblyName);
Type type = assembly.GetType(className);
object instance = Activator.CreateInstance(type,parameters,null);在vs里面监视 发现 instance里面看不到 m 和 s
所以 在调用的时候
type.InvokeMember(methodName, BindingFlags.Instance ,null ,instance ,null)
抛异常了请大虾指教!!
貌似不行喔,麻烦给个全解
{
protected abstract void m();
protected void s(){ Console.WriteLine("s..."); }}class c : b
{
protected override void m() { Console.WriteLine("m..."); }}public class Program
{
[STAThread]
static void Main(string[] args)
{
Type type = typeof(c);
object o = Activator.CreateInstance(type); type.InvokeMember("m", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, null, o, null);
type.InvokeMember("s", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.InvokeMethod, null, o, null);
}
}
public override void m(){} // <--- 这行有错误,你不能提升访问权限。
不好意思 笔误笔误 呵呵 c 里面也是protected的 不然编译不过去的
我试了你的方法 可以喔 多谢多谢
但是我用别人给我的一个dll 就不行 我再研究研究哈