How to create an object instance of class with internal constructor via reflection?

匿名 (未验证) 提交于 2019-12-03 02:31:01

问题:

Example:

class Program {     static void Main(string[] args)     {         var myClass = Activator.CreateInstance(typeof(MyClass));     } }  public class MyClass {     internal MyClass()     {     } } 

Exception:

System.MissingMethodException

No parameterless constructor defined for this object.

Solution:

var myClass = Activator.CreateInstance(typeof(MyClass), nonPublic:true); 

I cannot understand, why I cannot create an instance inside the assembly with internal constructor. This constructor should be available inside the execution assembly. It should work like public for this assembly.

回答1:

It is not that impossible. you've to tell it is not a public.

var myClass = Activator.CreateInstance(typeof(MyClass), true);//say nonpublic 


回答2:

The constructor inside your MyClass is Internal try to change to public

public class MyClass {     public MyClass()     {     } } 

or

Pass true to CreateInstance

var myClass = Activator.CreateInstance(typeof(MyClass),true ); 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!