我收到以下错误.
类型'Test.ICacheProvider'不能在泛型类型或方法'StorageManager.Test.IFileInfo'中用作类型参数'TStorageProvider'.没有从"StorageManager.Test.ICacheProvider"到"StorageManager.Test.IStorageProvider"的隐式引用转换.
这个程序设计结构有什么不对吗?
计划:
// Cache Provider Classes
public interface ICacheProvider { }
public class BaseCacheProvider : ICacheProvider { }
public class DerivedCacheProvider : BaseCacheProvider { }
// Storage Classes
public interface IStorageProvider<TCacheProvider> where TCacheProvider :
ICacheProvider { }
public interface BaseStorageProvider<TCacheProvider> :
IStorageProvider<TCacheProvider> where TCacheProvider : ICacheProvider { }
public interface DerivedStorageProvider : BaseStorageProvider<ICacheProvider> { }
// User Classes
public interface IFileInfo<TStorageProvider>
where TStorageProvider : IStorageProvider<ICacheProvider> { }
public class FileInfo : IFileInfo<ICacheProvider> { }
Run Code Online (Sandbox Code Playgroud)
错误在于FileInfo类的定义.您将模板参数设置为,ICacheProvider但约束是模板参数必须是IStorageProvider<ICacheProvider>.
这可能会更好:
public interface FileInfo
: IFileInfo<IStorageProvider<ICacheProvider>>
Run Code Online (Sandbox Code Playgroud)
甚至你的名字都不匹配:IFileInfo需要存储提供商,但你给它缓存提供商.
| 归档时间: |
|
| 查看次数: |
222 次 |
| 最近记录: |