【发布时间】:2012-05-23 12:05:56
【问题描述】:
我有以下通用方法将一种类型的输入对象序列化为超类型,如下所示:
public string SerialiseAs<TResult, TInput>(TInput input) where TInput : TResult
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(TResult));
MemoryStream stream = new MemoryStream();
ser.WriteObject(stream, input);
stream.Position = 0;
StreamReader reader = new StreamReader(stream);
return reader.ReadToEnd();
}
我必须调用这个方法指定两个泛型类型如下:
MySubType x = new MySubType();
string json = SerialiseAs<MySuperType, MySubType>(x);
我的问题是,为什么在这种情况下不能推断出TInput?是因为TResult 实际上没有用作返回类型吗?以下代码更简洁,但由于缺少输入类型而无法编译:
MySubType x = new MySubType();
string json = SerialiseAs<MySuperType>(x);
【问题讨论】:
-
C++ 多吗?如果只有 C# 有(成员)类型定义。我想要那个。但是不,那样不行。