我想做一些类似的事情:
internal interface IInternalStore
{
object GetValue(object key);
}
public interface IStore<in TKey, TValue>
: IInternalStore
{
TValue GetValue(TKey key);
}
public interface IStore
: IInternalStore
{
TValue GetValue<in TKey, TValue>(TKey key);
}
我想这样做的原因是我可以检查该类是否为 IInternalStore 而不必检查各个接口类型。
IE。
// Defined by the implementing developer
public class MyStoreA
: IStore<int, int>
{
int GetValue(int key);
}
public class MyStoreB<TKey, TValue>
: IStore
{
TValue GetValue(TKey key);
}
// Internal method used by me
void GetValueFromStore(object store)
{
if (store is IInternalStore)
{
{do something}
}
}
但据我所知,我想做的事情是不可能的,因为 IInternalStore 必须与继承的接口具有相同的访问器,并且它需要开发人员实现所有继承的方法。
我错了吗?有没有办法做我想做的事?