我已经定义了自己的< sectionGroup>和< section> web.config中的元素。
我需要通过自定义< section>指定的其中一个参数是一种类型。
例如,我目前有
<variable name="stage" value="dev" type="System.String, mscorlib" />
然后在ConfigurationElement
的实施中我有
[ConfigurationProperty("type", IsRequired = true)]
public Type ValueType
{
get
{
var t = (String) this["type"];
return Type.GetType(t);
}
set
{
this["type"] = value;
}
}
在运行时,它会抛出异常
无法找到支持转换为/来自字符串的转换器,类型为'Type'的属性'type'。
我尝试过各种各样的事情,比如
valueType
(以避免与可能预先配置的同名属性发生冲突)"System.String"
return (Type) this["type"];
但异常总是一样的。
有人能指出我正确的方向吗?
答案 0 :(得分:4)
使用类似的东西:
[ConfigurationProperty("type", IsRequired = true)]
[TypeConverter(typeof(TypeNameConverter)), SubclassTypeValidator(typeof(MyBaseType))]
public Type ValueType
{
get
{
return (Type)this["type"];
}
set
{
this["type"] = value;
}
}
SubclassTypeValidator的使用并非绝对必要,但大多数情况下你会使用它...我至少会这样做。