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.
It is not that impossible. you've to tell it is not a public.
var myClass = Activator.CreateInstance(typeof(MyClass), true);//say nonpublic
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 );
来源:https://stackoverflow.com/questions/19240971/how-to-create-an-object-instance-of-class-with-internal-constructor-via-reflecti