動的タイプの1つを暗黙的に変換しようとすると、問題が発生します。次のような定義を持つ2つのアセンブリがあります。
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'"}のオペランドには適用できません。
以前は、これら2つのクラスが同じアセンブリにある場合、このコードは正常に機能していました。誰かが私がここで間違っていることを教えてもらえますか?
ありがとう、
マックス