日期:2014-05-20 浏览次数:20832 次
using System;
using System.Reflection;
namespace ReflectTest
{
class Program
{
static void Main(string[] args)
{
var obj = GetResult("System.Int32", 1, 2);
Console.WriteLine(obj);
Console.Read();
}
static object GetResult(string typeString, params object[] args)
{
Type t = Type.GetType(string.Format("ReflectTest.Operation`1[{0}]", typeString));
MethodInfo mi = t.GetMethod("Add", BindingFlags.Static|BindingFlags.Public);
return mi.Invoke(null, args);
}
}
public class Operation<T> where T : new()
{
public static string Add(T obj1, T obj2)
{
return obj1.ToString() + "+" + obj2.ToString();
}
}
}
------解决方案--------------------
没懂什么意思。
如果传入不同的类型,那就要用到循环了 来判断类型后 返回字符串
类型就得穷举了吧?
------解决方案--------------------
1,个人建议你用枚举,(枚举?若不知道你可以上MSDN查一下)
把T类型设成枚举型,然后在里面填入你想要的可能值,比如在C#中可以这么写:
enum Days { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday };
enum Months : byte { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
这里的Days和Months就是你的T,然后你调用的时候就可以匹配了,只要值在你的枚举里面就行。
2,实在不行用委托,把这个要传值的方法用委托来实现(不太明白,上MSDN),这个方法基本没失手过。