我正在用C#和.NET 3.5编写自定义配置类。其中一个属性应为System.Type类型。当我运行代码时,我得到了标题中提到的错误。
[ConfigurationProperty("alertType", IsRequired = true)]
public Type AlertType
{
get { return (Type)this["alertType"]; }
set { this["alertType"] = value; }
}
配置文件如下所示:
<add name="Name" pollingInterval="60" alertType="Namespace.ClassName, Company.Project" />
.net框架能够将字符串转换为System.Type,因为配置文件的configSections具有type属性。问题是他们是如何做到的。
答案 0 :(得分:61)
我知道这已经过时了,但我认为这实际上是正确答案:
[TypeConverter(typeof(TypeNameConverter))]
[ConfigurationProperty("alertType", IsRequired=true)]
public Type AlertType
{
get { return this[ "alertType" ] as Type; }
set { this[ "alertType" ] = value; }
}
添加TypeNameConverter可以在不使用Type.GetType()的情况下进行从String到Type的转换。
答案 1 :(得分:5)
我认为你正在寻找Type.GetType Method (String)
答案 2 :(得分:5)
您可以尝试使用TypeNameConverter课程。它有两种你可能感兴趣的方法:
ConvertToString
和ConvertFromString