c#で実行時にクラスのフィールドを変更できますか?
たとえば、クラスがある場合:
public class ExampleClass{
public string Name;
}
リフレクションまたはその他の手法を使用して、実行時に名前を Name1 に変更できますか?
public class ExampleClass{
public string Name1;
}
c#で実行時にクラスのフィールドを変更できますか?
たとえば、クラスがある場合:
public class ExampleClass{
public string Name;
}
リフレクションまたはその他の手法を使用して、実行時に名前を Name1 に変更できますか?
public class ExampleClass{
public string Name1;
}
いいえ、実行時に型の実際のメンバーを変更することはできません
オプション:
ExampleClass
異なるメンバーがあり、おそらくそれらの間のマッピングコードがありますICustomTypeDescriptor
or - を検討してください。これにより、一部のフレームワークは、実際にはそうではなくても、あたかもを持っているIDynamicMetaObjectProvider
かのように扱うことができます (注:やのようなものには の実装が含まれますが、実行できます)。他の方法で)Name1
DynamicObject
ExpandoObject
IDynamicMetaObjectProvider
var val = obj["Name1"];
意味のあるものを返すようにしますDynamicObject を見てください:
http://msdn.microsoft.com/en-us/library/system.dynamic.dynamicobject.aspx