比如
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)
抛异常了请大虾指教!!

解决方案 »

  1.   

    没有 那个 classname = "namespace.c"
      

  2.   

    别用activator,用你上边的那个Assembly的实例
      

  3.   

    honkerhero(孤独的流浪)  
    貌似不行喔,麻烦给个全解
      

  4.   

    abstract class b
    {
    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(){} // <--- 这行有错误,你不能提升访问权限。
      

  5.   

    qyuhen(秋雨痕) ( ) 
    不好意思 笔误笔误 呵呵 c 里面也是protected的 不然编译不过去的
    我试了你的方法 可以喔 多谢多谢 
    但是我用别人给我的一个dll  就不行 我再研究研究哈