c# - C#泛型类作为泛型参数
问题描述
这是我生产所需资源的工厂的示例性实现:
public abstract class Resource<T> where T : ResourceObject
{
protected string path = "base";
public IEnumerable<T> payload;
public Type resType = typeof(T);
public T GetFirst()
{
return payload.First();
}
}
public class ImageResource : Resource<Image>
{
public ImageResource () : base()
{
path = path + "/image";
}
}
public class RemoteResourcesFactory : ResourcesFactory
{
public static T Get<T>() where T : Resource<ResourceObject>, new()
{
T resource = new T();
resource.payload = load(resource.resType, resource.path); //here is some logic with instance
return resource;
}
}
当我尝试使用它时,会出现错误
Image image = RemoteResourcesFactory.Get<ImageResource>().GetFirst();
The type 'ImageResource' cannot be used as type parameter 'T' in the generic type or method 'RemoteResourcesFactory.Get<T>()'. There is no implicit reference conversion from 'ImageResource ' to 'Resource<ResourceObject>'
我是 C# 新手,想知道我失败的地方。或者可能是整体架构错误
解决方案
推荐阅读
- python - pandas DataFrame 解析对行的内部引用
- angular - Angular CLI 能否用于通过 ssh 在远程服务器上构建和部署?
- php - 如何在 WordPress 页面模板中显示分类的帖子?
- optimization - 多节点 Neo4j 的匹配查询优化
- nginx - 在 nginx 后面设置 mongodb
- c# - 分支执行后如何返回管道根目录?
- google-cloud-platform - 按项目划分的 Google Cloud API 使用数据
- python - 试图在 macos 上使用 pip 安装任何东西,但不能
- ios - 删除服务器/后端帐户后,iOS 订阅会发生什么情况?
- html - 在 html 文件中使用填充进行样式设置