如:DateTime结构有静态运算符“〉”怎样通过反射机制来调用它呢,
我在调用其它静态函数如DaysInMonth使用的是如下代码
object o = t.InvokeMember("DaysInMonth",BindingFlags.Public|BindingFlags.InvokeMethod|BindingFlags.Static
,null,null,new object[]{2005,2});
MessageBox.Show(o.ToString());
我在调用其它静态函数如DaysInMonth使用的是如下代码
object o = t.InvokeMember("DaysInMonth",BindingFlags.Public|BindingFlags.InvokeMethod|BindingFlags.Static
,null,null,new object[]{2005,2});
MessageBox.Show(o.ToString());
Type t = typeof(DateTime);
object o = t.InvokeMember("op_LessThan",BindingFlags.Public|BindingFlags.InvokeMethod|BindingFlags.Static
,null,null,new object[]{DateTime.Now,DateTime.Now.AddDays(1)});
但对于基本类型 int,string等就没有相应的函数,
看看 清柳的blog
但其方式可能过于复杂,
我的目的是,动态的两个值,动态的类型,以及动态的操作符,希望在执行时返回一个bool值
若采用这种方式可能对于每一个类型都需要生成一段代码,否则类似
function LessThan(object v1,object v2)
{
return v1<v2;
}
的代码不能通过编译,也可以通过类型值生成
function LessThan(DateTime v1,DateTime v2)
{
return v1<v2;
}
或
function LessThan(string v1,string v2)
{
return v1<v2;
}
...
在2.0里使用泛型或者可以
function LessThan(T v1,T v2)
{
return v1<v2;
}
我觉得现在还是使用CompareTo函数更简单
基本类型,DateTime等都实现了该函数,其接口也是一致的,不需要另写代码
若使用新增的类,只要其实现
CompareTo函数都可以使用
应该比要重新实现一套运算符更简单