基本クラスを定義するだけです(抽象化できます):
public abstract class Named
{
public string Name { get; set; }
}
そしてそれから継承します:
public class Person : Named
{
}
C# のように実際には必要ありません。isNamed
文字列を と比較しても完全に安全==
です。
あなたのクラスが、そうでない別のクラスからすでに継承している場合は、自動プロパティNamed
を手動で追加するか、シミュレートされた多重継承に頼る必要があります。 Name
Named
または、すべての基本クラスに対して特定の変更を作成できます。
public abstract class NamedLifeForm : LifeForm
{
public string Name { get; set; }
}
public class Person : NamedLifeForm
{
// Person inherits both a Name and all relevant members of LifeForm
}
もう 1 つの方法は、と のインスタンスのNamed<T>
2 つのプロパティを持つ汎用ラッパー を作成することです。しかし、そうすると構築やアクセスが面倒になるのでお勧めしません。Name
T