【发布时间】:2013-10-28 06:26:09
【问题描述】:
这是 ITest 接口:
public interface ITest
{
Type ReturnType { get; }
Object MyMethod(params object[] args);
}
和测试类:
public class Test: ITest
{
public Type ReturnType { get { return typeof(long); } }
public Object MyMethod(params object[] args)
{
long sum = 0;
foreach(object arg in args)
{
sum += (long)arg;
}
return sum;
}
}
所以我需要一种方法,可以自动将ITest 方法的结果转换为ReturnType 类型。
我认为是这样的:
public T Transform<T>(Type T, object result)
{
return (T)result;
}
并像这样使用:
Test test = new Test();
long result = Transform(test.ReturnType, test.MyMethod(1,2,3,4));
但正如你所知,我不能像这样使用泛型方法,我不想像这样显式声明返回类型:
long result = Transform<long>(test.MyMethod(1,2,3,4));
有什么建议吗?
【问题讨论】:
-
反射是一种选择吗?那么就有可能
-
那么根本不可能(据我所知)
-
为什么不想将类型参数传递给泛型方法?
-
为什么
ITest没有泛型? -
@nawfal 你说得对,这是个不错的选择
标签: c# generics type-conversion