
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);解决方法
My question is,why can’t Tinput be inferred in this situation?
它可以 – 它是无法推断的TResult,并且无法指定“部分”推理.
您有时可以将类型参数分为通用类型的参数和通用方法的类型参数,因此您最终会得到:
// Explicitly state TResult,and infer TinputSerializer<MySuperType>.Serialize(x);总结
以上是内存溢出为你收集整理的具有多种类型的C#通用类型推断全部内容,希望文章能够帮你解决具有多种类型的C#通用类型推断所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)