Search code examples
c#dllsystem.reflection

No constructor found while instantiating Assembly on runtime


After loading a DLL and obtaining a type, I get an exception trying to instantiate it:

Assembly dll = Assembly.LoadFrom(@"C:\path\file.dll");
Type type = dll.GetType("namespace.CustomClass");
object obj = Activator.CreateInstance(type); // <-- System.MissingMethodException

"No constructor with 0 parameters defined for this object" (average translation)

Exploring the loaded type, I can see the DeclaredConstrunctors -> {Void .ctor()}

But calling type.GetConstructors() I get an empty array (I guess that means that only default constructor exists?)

I neither found any factory class that returns an object of my class, or an getInstance function.

Any idea how to proceed?


Solution

  • The DLL had a related OCX file placed in another folder.

    The file has been registered using:

    Regsvr32 .\file.ocx

    After that, I've been able to instantiate an object calling:

    using Microsoft.VisualBasic;

    MyAssemblyName object = (MyAssemblyName) Interaction.CreateObject( "MyNamespace.MyAssemblyName", "");