【发布时间】:2011-03-10 17:40:44
【问题描述】:
我在尝试隐式转换我的一种动态类型时遇到了问题。有两个程序集,其定义类似于以下内容:
配置.dll:
public class ConfigurationValue : DynamicObject
{
public ConfigurationValue(string val)
{
//...
}
//...
public static implicit operator string(ConfigurationValue val)
{
return val.ToString();
}
}
在这个 dll 中还有一个名为 Configuration 的类,它有一个名为 Instance 的成员变量(以使类成为单例)。此变量将ConfigurationValue 实例保存在字典中,并且是动态类型。这允许我执行以下操作:
Server.dll:
//...
if (Configuration.Instance.SecurityLevel != "Insecure")
{
//...
}
假设 SecurityLevel 在字典中。 这个 if 语句逐字出现在我的代码中,并且总是失败并出现以下错误:
{“运算符'!='不能应用于'System.Dynamic.DynamicObject'和'string'类型的操作数”}
以前,当这两个类在同一个程序集中时,这段代码可以正常工作。谁能告诉我我在这里做错了什么?
谢谢,
最大
【问题讨论】:
标签: c#-4.0 implicit-conversion dynamic-typing