私はインターフェースを持っています:
public interface Profile
{
string Name { get; }
string Alias { get; set; }
}
実装するすべてのオブジェクトにProfile
はName
とがありますが、常に と同じになるようにAlias
制限するものもあります。この制限を適用するものは、次のように実装できます。Alias
Name
Alias
string Profile.Alias
{
get
{
return ((Profile)this).Name;
}
set { }
}
this
明示的なインターフェイス実装のコンテキスト内では、可能な型のみであり、それが実装されているクラスまたは他のインターフェイスではなく、インターフェイスProfile
を介してアクセスされたことがわかっているため、キャストが必要なのはなぜですか?Profile
getter 実装に使用return this.Name;
すると、次のエラーが発生します。
Type `ConcreteProfile' does not contain a definition for `Name' and no extension method `Name' of type `ConcreteProfile' could be found (are you missing a using directive or an assembly reference?)