2011-08-14 21 views
0

如何实现此getter和setter?它会使用方法而不是属性吗?还是不可能?属性和方法的字符串表示形式

SomeClass someObject = new SomeClass(); 
int x = someObject.GetProperty("X"); 
someObject.SetProperty("Y","Value"); 
someObject.Call("DoSomething"); 


class SomeClass 
{ 
    public int X{ get; set; } 
    public string Y{ get ;set; } 
    public void DoSomething() { return; } 
} 

回答

3

,你将需要使用Reflection对于这样的事情 - 例如:

SomeClass someObject = new SomeClass(); 

int x = someObject.GetType().GetProperty ("X").GetGetMethod().Invoke (someObject,null); 

somObject.GetType().GetProperty("Y").GetSetMethod().Invoke(someObject, new object[] { "Value" }); 

someObject.GetType().GetMethod("DoSomething").Invoke(someObject, null); 
+0

怎么样的一些参数的方法? –

+0

点击链接(反射)在我的答案,那里你会发现几个样本,包括“带参数的方法”... – Yahia

1

是的,你可以使用反射:

SomeClass sc = new SomeClass(); 
Type scType = sc.GetType(); 
PropertyInfo xProp = scType.GetProperty("X"); 
xProp.SetValue(sc, 7, null); // sets sc.X = 7 
相关问题