在.net中按名称字符串初始化类型

Max*_*lov 3 c#

我有一个应用程序从App.config启动时读取其设置.应用程序可能使用不同的预先存储提供程序.目前我有两个实现:Oracle和Dummy(用于测试目的).

现在在我的Program.cs中,我读了要使用的存储类型的名称.它可能是OracleStorage或DemoStorage.这些是类型名称,其实现位于单独的dll项目中.

现在,如果我有一个类型名称,如何实例化一个对象?

所以我可以写:

IStorageProvider storage = new typof(myStorageClassNameReadFromAppConfig);
Run Code Online (Sandbox Code Playgroud)

Ree*_*sey 12

您可以Activator.CreateInstance结合使用Type.GetType:

IStorageProvider storage = 
        (IStorageProvider) Activator.CreateInstance(
                             Type.GetType(myStorageClassNameReadFromAppConfig)
                           );
Run Code Online (Sandbox Code Playgroud)