具有多种类型的C#通用类型推断

具有多种类型的C#通用类型推断,第1张

概述我有以下通用方法将一种类型的输入对象序列化为超类型,如下所示: public string SerialiseAs<TResult, TInput>(TInput input) where TInput : TResult{ DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(TResult)); 我有以下通用方法将一种类型的输入对象序列化为超类型,如下所示:

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#通用类型推断所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1223505.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-05
下一篇2022-06-05

发表评论

登录后才能评论

评论列表(0条)

    保存