Home >Backend Development >C++ >How Can I Instantiate a Class Dynamically from its Assembly and Type Name?
Dynamically create class instances at runtime
Only knowing the DLL name and class name allows you to create object instances at runtime without adding an assembly reference in your project. This feature is especially suitable for scenarios such as plug-in systems or dependency injection.
Use Assembly.LoadFrom()
To load an assembly into memory, use the Assembly.LoadFrom() method and provide the path to the DLL file:
<code class="language-csharp">Assembly assembly = Assembly.LoadFrom("library.dll");</code>
Find Type object
After loading the assembly, use reflection to locate specific types:
<code class="language-csharp">Type type = assembly.GetType("Company.Project.Classname");</code>
Create instance
Finally, use Activator.CreateInstance() to create an object instance of the type:
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance(type);</code>
Handling unknown DLL locations
If you don't have an absolute path to the DLL, you can rely on the .NET type resolution mechanism:
<code class="language-csharp">object instanceOfMyType = Activator.CreateInstance("library.dll", "Company.Project.Classname");</code>
This method will automatically search a variety of locations, including the application root, system32, and the GAC, to find assemblies and resolve types.
Advanced Customization
If necessary, you can enhance this solution by implementing a custom DLL search mechanism to search for DLLs in specific directories. This will provide greater flexibility in scenarios where you store other assemblies that are not searched by the default type resolution mechanism.
The above is the detailed content of How Can I Instantiate a Class Dynamically from its Assembly and Type Name?. For more information, please follow other related articles on the PHP Chinese website!