Неявное преобразование не работает для динамического типа - PullRequest
1 голос
/ 10 марта 2011

Я столкнулся с проблемой при попытке неявного преобразования одного из моих динамических типов.Существуют две сборки с определениями, похожими на следующие:

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 в моем коде встречается дословно и всегда завершается ошибкой со следующей ошибкой:

{"Оператор"! = "Не может быть применен к операндам типа 'System.Dynamic.DynamicObject' и 'string'"}

Ранее, когда эти два класса находились в одной сборке, этот код работал нормально.Может кто-нибудь сказать мне, что я здесь делаю не так?

Спасибо,
Макс

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Решил проблему, на самом деле немного неловко, я забыл изменить класс контейнера для ConfigurationValue (например, тип Configuration.Instance) с внутреннего на публичный, когда переместил его в новую сборку, поэтому, конечно, типне удалось разрешить, и неявное преобразование не найдено

0 голосов
/ 10 марта 2011

Попробуйте

var SecurityLevel = new ConfigurationValue("Insecure");
...