无法找到支持转换为/来自字符串的转换器,用于"类型"类型的属性

Jon*_*ski 23 c# .net-3.5

我正在用C#和.NET 3.5编写自定义配置类.其中一个属性应为System.Type类型.当我运行代码时,我得到标题中提到的错误.

[ConfigurationProperty("alertType", IsRequired = true)]
public Type AlertType
{
    get { return (Type)this["alertType"]; }
    set { this["alertType"] = value; }
}
Run Code Online (Sandbox Code Playgroud)

配置文件如下所示:

<add name="Name" pollingInterval="60" alertType="Namespace.ClassName, Company.Project" />
Run Code Online (Sandbox Code Playgroud)

.net框架能够将字符串转换为System.Type,因为配置文件的configSections具有type属性.问题是他们是如何做到的.

Sha*_*all 64

我知道这是旧的,但我认为这实际上是正确的答案:

[TypeConverter(typeof(TypeNameConverter))]
[ConfigurationProperty("alertType", IsRequired=true)]
public Type AlertType
{
    get { return this[ "alertType" ] as Type; }
    set { this[ "alertType" ] = value; }
}
Run Code Online (Sandbox Code Playgroud)

添加TypeNameConverter可以在不使用Type.GetType()的情况下进行从String到Type的转换.


Pre*_*gha 5

我认为你正在寻找Type.GetType方法(String)


BFr*_*ree 5

您可以尝试使用TypeNameConverter类.它有两种你可能感兴趣的方法:

ConvertToStringConvertFromString