Sam*_*ami 2 .net c# generics generic-collections generic-constraints
我想创建一些通用方法,如下面的代码:
public async Task<T> Get<T>(string url) where T : IBaseModel, IList<IBaseModel>
Run Code Online (Sandbox Code Playgroud)
显然我想支持可枚举的集合以及从IBaseModel界面驱动的单个对象.方法定义没问题,但是当涉及到它的用法时,我会得到以下错误:
await myClass.Get<List<DrivedClassFromBaseModel>>("some url");
There is no implicit conversion from "System.Collection.Generic.List<DrivedClassFromBaseModel> to System.Collection.Generic.IList<IBaseModel>"
Run Code Online (Sandbox Code Playgroud)
通用约束将由AND组合,因此where T : IBaseModel, IList<IBaseModel>意味着T应该实现两者IBaseModel和IList<IBaseModel>.
您需要创建两个方法:
public async Task<T> Get<T>(string url) where T : IBaseModel
public async Task<IList<T>> GetList<T>(string url) where T : IBaseModel
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
105 次 |
| 最近记录: |