1

我在 web.config 中定义了自己的 <sectionGroup> 和 <section> 元素。

我需要通过自定义 <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;
    }
}

在运行时,这会引发异常

找不到支持“类型”类型的属性“类型”转换为/从字符串转换的转换器。

我尝试过各种各样的事情,例如

  • 将属性重命名为valueType(以避免与可能的同名预配置属性发生任何冲突)
  • 简单地将其指定为"System.String"
  • 将属性中的 getter 更改为return (Type) this["type"];

但例外总是一样的。

有人可以指出我正确的方向吗?

4

1 回答 1

4

使用这样的东西:

[ConfigurationProperty("type", IsRequired = true)]
[TypeConverter(typeof(TypeNameConverter)), SubclassTypeValidator(typeof(MyBaseType))]
public Type ValueType
{
    get
    {
        return (Type)this["type"];            
    }
    set
    {
        this["type"] = value;
    }
}

SubclassTypeValidator 的使用不是绝对必要的,但大多数时候你会使用它……至少我会使用它。

于 2013-06-03T09:55:42.693 回答