public void Test(string str)
{
//...
ClassA a = new ClassA();
if(a.str == "Yes")
//...}
上面的代码中的a.str,我的原意是说,假设接收到str参数为"Name",则表达式是a.Name == "Yes"
怎么样实现啊?当然还有可能需要把传入的参数作为表达式中的任一一部分,比如方法名等.就是类似于javascript中的eval()函数,在C#中如何实现啊?
{
//...
ClassA a = new ClassA();
if(a.str == "Yes")
//...}
上面的代码中的a.str,我的原意是说,假设接收到str参数为"Name",则表达式是a.Name == "Yes"
怎么样实现啊?当然还有可能需要把传入的参数作为表达式中的任一一部分,比如方法名等.就是类似于javascript中的eval()函数,在C#中如何实现啊?
1、嵌入脚本语言,比如JavaScript或IronPython;
2、自己调用.net的C#编译器功能动态生成;
3、把代码分解成几种固定的形式,用函数或委托调用。
{
ClassA a = new ClassA();
if (str=="Name"){
a.Name == "Yes"
}
.............
if (str=="xx"){
a.xx == "Yes"
}
........
不知道,只知道这个笨方法呵呵
不过Name,xx都事先必须确定存在,而且都定义了方法
........
}
public void Test(string str)
{
//...
//ClassA a = new ClassA();
Type t = typeof (ClassA)
object result = t.InvokeMember (str, BindingFlags.GetField, null, null, new object [] {}); if(rusult.ToString()== "Yes")
//...}
如果是方法名,只要把BindingFlags.GetField改为BindingFlags.InvokeMethod就行了。
另外你可以参考
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfsystemtypeclassinvokemembertopic.asp