除了重命名字段以便为其分配值(如果其名称与方法相同)之外,还有其他方法吗?
在撰写本文时,我只是想也许可以使用反思。
反思有效,但是有更好/不同的方式吗?
FieldInfo fi = typeof(TheClass).GetField("TheClash"); fi.SetValue(TheClassObj, TheFieldValue);
答案 0 :(得分:2)
它是如何具有相同名称的?那不应该(AFAIK)通常是可能的。如果问题出在基类上,可能是:
base.fieldName = value;
如果你的意思是方法vs 变量,那么:
this.MethodName();
除此之外,我看到问题的唯一方法就是你有“foo”和“Foo”,并且是用像VB这样不区分大小写的语言来调用。
答案 1 :(得分:1)
为什么不将TheClassObj强制转换为类型TheClass并以这种方式访问它的属性?
((TheClass)TheClassObj).TheField = "blah";
答案 2 :(得分:1)
您可能希望仔细查看BindingsFlags,它们是Type.GetField()的可选参数。 GetField有一个,GetProperty有一个。希望这有帮助!
答案 3 :(得分:0)
当然,反射是通过名称访问字段或方法的方式。但是你为什么要这样做?
你可以这样做:
public int Test{get;set;}
然后,编译器将为您生成变量。