所以我有这个课:
public class MyCallResponse<T>
{
public bool Success{ get; set; }
public T Result { get; set; }
// others
}
此类可用于许多不同的呼叫类型。因此,T
对Result
。但是...在编码时,我总是提前知道T
会是哪种类型。所以我可以这样使用它:
MyCallResponse<List<foo>> response = await MakeACall<List<foo>>();
要么
MyCallResponse<int> response = await MakeACall<int>();
要么
MyCallResponse<string> response = await MakeACall<string>();
然后我有方法:
public async Task<MyCallResponse<T>> MakeACall<T>()
{
}
很棒!
但是,当我知道返回类型为时,我不知道该如何使用它null
。这不起作用:
MyCallResponse<null> response = await MakeACall<null>();
使用通用类型'MyCallResponse'需要1个类型参数
更不用说C#还不知道该怎么办 MakeACall<null>()
其他一些帖子一直在说要使用,default(T)
但是我不确定如何在我的上下文中使用它。
有想法吗?谢谢!
更新:
根据Igor的评论,我解决了问题的前半部分,如下所示:
public class MyCallResponse
{
public bool Success{ get; set; }
// others
}
public class MyCallResponse<T> : MyCallResponse
{
public T Result { get; set; }
}
现在,我可以这样做:
APICallResponse<string> response = ...
要么
APICallResponse response = ...
我现在正在研究的是:
APICallResponse response = await MakeACall<???>();
当我不需要传入类型时。
Null不是C#中的类型。泛型类型必须具有类型参数。如果要使用APICallResponse
而不是APICallResponse<T>
,则必须声明名称APICallResponse的另一个类型/类。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句