Reputation: 7471
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.
Upvotes: 6
Views: 8478
Reputation: 496
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 );
Upvotes: 0
Reputation: 73462
It is not that impossible. you've to tell it is not a public.
var myClass = Activator.CreateInstance(typeof(MyClass), true);//say nonpublic
Upvotes: 18