文字列型のプロパティを実装する型があるとします。
public class Record
{
public string Value { get; set; }
}
次に、同じ名前のプロパティを定義するインターフェイスがあります。
public interface IIntValued
{
public int Value { get; set; }
}
次のように明示的なインターフェイスを使用できます。
public class Record : IIntValued
{
public string Value { get; set; }
int IIntValued.Value
{
get{ return 0; } set{}
}
}
ただし、明示的なインターフェイスで文字列「Value」を参照できるようにしたい場合は、できますか? もしそうなら、どのように?私はそれが次のようなものだと想像します:
public class Record : IIntValued
{
public string Value { get; set; }
public int IIntValued.Value
{
get
{
string value = /*Magic here*/.Value;
return int.parse(value);
}
set{}
}
}
ご覧のとおり、「int 値」「Value」プロパティの式に「文字列値」「Value」プロパティが必要です。それが別の明示的に実装されたインターフェイス メンバーである場合、そのインターフェイスに型キャストしてから使用できますが、暗黙の型メンバーに対してはどのように機能するのでしょうか?
注: この例は少し不自然ですが、うまくいけば言語の問題を示しています。