c# – 如何将ConfigurationSection属性作为System.Type获取

前端之家收集整理的这篇文章主要介绍了c# – 如何将ConfigurationSection属性作为System.Type获取前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想定义一个自定义配置部分,并且有一个属性不会产生字符串,而是一个system.type(如果用户输入了一堆垃圾,则为null)

例如.:

<myCustomConfig myAnnoyingType="System.String" />

在C#中(在当前的现实世界中)

[ConfigurationProperty("myAnnoyingType")]
public string MyAnnoyingType
{
   get { return (string)this["myAnnoyingType"]; }
}

// else where in the app
var stringType = thatConfig.MyAnnoyingType
var actualType = Type.GetType(stringType);
// wow that was boring.

在C#中(在理想世界中)

[ConfigurationProperty("myAnnoyingType")]
public Type MyAnnoyingType
{
    get { return (Type)this["myAnnoyingType"]; }
}

我想要的不是必须将项目保存为C#中的字符串,然后将其转换为应用程序中的Type;我希望这是作为ConfigurationManager职责的一部分自动完成的.

这可能吗?如果必须的话,我可以使用TypeConverter,只是将它保持为字符串似乎很弱,然后在应用程序中进行类型查找.这不难做到,当我知道我正在寻找一种类型时,似乎毫无意义,必须明确地做它的价值.

解决方法

尝试使用将为您进行转换的TypeConverterAttribute.这对我有用.
[ConfigurationProperty("type")]
    [TypeConverter(typeof(TypeNameConverter))]
    public Type Type
    {
        get
        {
            return (System.Type)this["type"];
        }
        set
        {
            this["type"] = value;
        }
    }
原文链接:https://www.f2er.com/csharp/91792.html

猜你在找的C#相关文章