【发布时间】:2015-09-20 15:49:11
【问题描述】:
我想定义一个自定义配置部分,并且有一个属性不是产生字符串而是产生一个 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# 中的字符串,然后将其转换为应用程序中的类型;我希望作为 ConfigurationManager 职责的一部分自动完成此操作。
这可能吗?如果必须,我可以使用 TypeConverter,将其保留为字符串然后在应用程序中进行类型查找似乎很弱。这并不难,只是当我知道我正在寻找一种类型时似乎毫无意义,必须明确地这样做有什么价值。
【问题讨论】: