I am receiving following error .
The type 'Test.ICacheProvider' cannot be used as type parameter 'TStorageProvider' in the generic type or method 'StorageManager.Test.IFileInfo'. There is no implicit reference conversion from 'StorageManager.Test.ICacheProvider' to 'StorageManager.Test.IStorageProvider'.
Is anything wrong within this program design structure ?
Program :
// 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> { }
The error is in the definition of FileInfo class. You set the template parameter to ICacheProvider but the constraint is that the template argument must be IStorageProvider<ICacheProvider>.
This would probably be better:
public interface FileInfo
: IFileInfo<IStorageProvider<ICacheProvider>>
Even your names do not match: IFileInfo needs storage provider but you give it cache provider.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With