日期:2014-05-20 浏览次数:20700 次
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),这个方法基本没失手过。