gpt4 book ai didi

具有多种类型的 C# 泛型类型推断

转载 作者:行者123 更新时间:2023-11-30 13:23:33 25 4
gpt4 key购买 nike

我有以下通用方法将一种类型的输入对象序列化为父类(super class)型,如下所示:

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,并且无法指定“部分”推断。

有时您可以做的是将类型参数分成用于通用类型的参数和用于通用方法的参数,这样您d 结束于:

// Explicitly state TResult, and infer TInput
Serializer<MySuperType>.Serialize(x);

关于具有多种类型的 C# 泛型类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com