我想要按照以下方式做点什么:
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必须与继承的接口具有相同的访问器,并且它需要开发人员实现所有继承的方法。
我错了吗?有办法做我想要的吗?
答案 0 :(得分:2)
我错了吗?有办法做我想要的吗?
不,你是对的 - 公共界面不能扩展内部界面。
我建议您将这两个界面分开。然后,您可以随时拥有一个内部接口,如果您愿意,可以扩展它们,或者只是让相关的类实现这两个类。