0

c#で実行時にクラスのフィールドを変更できますか?

たとえば、クラスがある場合:

public class ExampleClass{
    public string Name;
}

リフレクションまたはその他の手法を使用して、実行時に名前を Name1 に変更できますか?

public class ExampleClass{
    public string Name1;
}
4

2 に答える 2

2

いいえ、実行時に型の実際のメンバーを変更することはできません

オプション:

  • その場で新しいタイプを作成します。これは によく似ていますが、ExampleClass異なるメンバーがあり、おそらくそれらの間のマッピングコードがあります
  • 意図がある種のランタイム バインディング用である場合は、ICustomTypeDescriptoror - を検討してください。これにより、一部のフレームワークは、実際にはそうではなくても、あたかもを持っているIDynamicMetaObjectProviderかのように扱うことができます (注:やのようなものには の実装が含まれますが、実行できます)。他の方法で)Name1DynamicObjectExpandoObjectIDynamicMetaObjectProvider
  • インデクサーを使用します。つまり、var val = obj["Name1"];意味のあるものを返すようにします
于 2013-06-14T13:19:06.747 に答える
0

DynamicObject を見てください:

http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx

于 2013-06-14T13:18:27.780 に答える