1

尝试隐式转换我的一种动态类型时遇到问题。有两个程序集,其定义类似于以下内容:

配置.dll:

public class ConfigurationValue : DynamicObject  
{
    public ConfigurationValue(string val)
    {
        //...
    }

    //...  

    public static implicit operator string(ConfigurationValue val)  
    {  
        return val.ToString();  
    }  
}  

在这个 dll 中还有另一个类调用了一个名为(以使类单例)Configuration的成员变量。Instance该变量将ConfigurationValue实例保存在字典中,并且是动态类型。这使我可以执行以下操作:

服务器.dll:

//...

if (Configuration.Instance.SecurityLevel != "Insecure")
{
    //...
}

假设 SecurityLevel 在字典中。这个 if 语句逐字出现在我的代码中,并且总是失败并出现以下错误:

{“运算符'!='不能应用于'System.Dynamic.DynamicObject'和'string'类型的操作数”}

以前,当这两个类在同一个程序集中时,这段代码可以正常工作。谁能告诉我我在这里做错了什么?

谢谢,
马克斯

4

2 回答 2

2

解决了问题,其实有点尴尬,我把容器类(比如的类型)移到新程序集的时候忘记把容器类ConfigurationValue(比如类型Configuration.Instance)从内部改成公共了,所以当然不能解析类型和隐式转换没找到

于 2011-03-10T18:15:46.757 回答
0

尝试

var SecurityLevel = new ConfigurationValue("Insecure");
于 2011-03-10T17:42:01.027 回答