我在尝试隐式转换其中一个动态类型时遇到了问题。有两个程序集的定义类似于以下内容:
Configuration.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语句在我的代码中逐字显示,并始终因以下错误而失败:
{“Operator'!='不能应用于'System.Dynamic.DynamicObject'和'string'类型的操作数”}
以前,当这两个类在同一个程序集中时,这段代码运行正常。谁能告诉我这里我做错了什么?
谢谢,
最大
答案 0 :(得分:2)
解决了这个问题,实际上有点尴尬,当我把它移动到新的程序集时,我忘了将ConfigurationValue
的容器类(例如Configuration.Instance
的类型)从内部更改为公共,所以当然无法解析类型并且未找到隐式转换
答案 1 :(得分:0)
尝试
var SecurityLevel = new ConfigurationValue("Insecure");