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

时间:2011-04-15 19:23:28

标签: c#

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

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

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

所以我可以写:

IStorageProvider storage = new typof(myStorageClassNameReadFromAppConfig);

1 个答案:

答案 0 :(得分:12)

您可以将Activator.CreateInstanceType.GetType结合使用:

IStorageProvider storage = 
        (IStorageProvider) Activator.CreateInstance(
                             Type.GetType(myStorageClassNameReadFromAppConfig)
                           );