Warlock
Warlock

Reputation: 7471

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

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

Answers (2)

mpakbaz
mpakbaz

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

Sriram Sakthivel
Sriram Sakthivel

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

Related Questions