Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C# Generic Constrains Issue

Tags:

c#

.net

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> { }
like image 660
Rajdip Patel Avatar asked Dec 31 '25 13:12

Rajdip Patel


1 Answers

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.

like image 196
Toni Petrina Avatar answered Jan 02 '26 01:01

Toni Petrina