我收到以下错误。
类型“Test.ICacheProvider”不能用作类型参数
泛型类型或方法中的“TStorageProvider”
'StorageManager.Test.IFileInfo'。没有
隐式引用转换自
'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> { }
错误在于定义FileInfo
班级。您将模板参数设置为ICacheProvider
但限制是模板参数必须是IStorageProvider<ICacheProvider>
.
这可能会更好:
public interface FileInfo
: IFileInfo<IStorageProvider<ICacheProvider>>
甚至你们的名字也不匹配:IFileInfo
needs storage提供者但你给它cache提供者。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)