1

我想做一些类似的事情:

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 必须与继承的接口具有相同的访问器,并且它需要开发人员实现所有继承的方法。

我错了吗?有没有办法做我想做的事?

4

1 回答 1

2

我错了吗?有没有办法做我想做的事?

不,你是对的——公共接口不能扩展内部接口。

我建议你把这两个接口分开。如果需要,您始终可以拥有一个扩展两者的内部接口,或者只是让相关类实现这两个类。

于 2012-07-13T08:36:17.373 回答