動的クラスメンバーを使用することは可能ですか?例えば
class blarg
{
public dynamic ctx = new ExpandoObject();
}
blargをDynamicObject
?から継承(および実装)させることもありません。
はい。dynamic
任意のクラス内でフィールドまたはプロパティを作成できます。
からの継承は、クラス自体を動的にしたい場合にDynamicObject
のみ必要です(技術的には、を実装する必要がありますがIDynamicMetaObjectProvider
、これは通常、を介して行われます)。DynamicObject
固定の継承構造はありません。第一に、dynamic
とにかくリフレクション/メタプログラミングを使用できるので、メンバーと通常のクラスをアタッチするだけで機能しますが、新しいメンバーなどを追加することはできません。第二に、あなたがする必要がある「すべて」完全なサポートdynamic
は実装ですIDynamicMetaObjectProvider
-何かを継承しません。「すべて」は引用符で囲まれています。これは簡単ではないためです。あなたがちょうどプロパティバッグが欲しい場合のように、DynamicObject
あなたのために重い物を持ち上げるために存在します。ExpandoObject
ただし、呼び出し元は(を使用しているため)特定のタイプにバインドされていないためdynamic
、率直に言って、から継承することは大きな問題ではありませんDynamicObject
。