パブリック プロパティの数を意味する場合は、明示的なインターフェイスの実装を使用します。
フィールド (およびスパース オブジェクトのオブジェクト スペース) を意味する場合: プロパティの実装には常にプロパティ バッグを使用できます。
C# の例:
string IDesigned.ApprovedBy {
get {return GetValue<string>("ApprovedBy");}
set {SetValue("ApprovedBy", value);}
}
値の辞書を使用:
readonly Dictionary<string, object> propValues =
new Dictionary<string, object>();
protected T GetValue<T>(string name)
{
object val;
if(!propValues.TryGetValue(name, out val)) return default(T);
return (T)val;
}
protected void SetValue<T>(string name, T value)
{
propValues[name] = value;
}
SetValue
また、通知に適した場所でもあることに注意してください。たとえば、 INotifyPropertyChanged
.NET でオブザーバー パターンを実装する場合などです。他の多くのアーキテクチャには、似たようなものがあります。オブジェクト キーでも同じことができますが (どのように機能するかEventHandlerList
など)、文字列キーの方が理解しやすいです ;-p
これは、アクティブに使用されているプロパティと同じだけのスペースを占有します。
最後のオプションは、さまざまなファセットをカプセル化することです。
class Foo {
public bool IsDesigned {get {return Design != null;}}
public IDesigned Design {get;set;}
// etc
}
HereFoo
はどのインターフェイスも実装していませんが、それらへのアクセスをプロパティとして提供します。