如果一个继承其他方法,如何在通用接口中隐藏非通用方法

时间:2019-07-04 08:51:22

标签: c# .net oop

我有接口:

public interface IQueryContainerGenerator
    {
        QueryContainer Generate(object source);
    }

    public interface IQueryContainerGenerator<in T>: IQueryContainerGenerator where T: class
    {
        QueryContainer Generate(T source);
    }

如果我使用通用版本的接口,则需要对IntelliSense方法签名QueryContainer Generate(object source)隐藏。

我如何实现它?

我尝试在类CompositeQueryContainerGenerator<T>: IQueryContainerGenerator<T> where T: class中使用显式接口实现,但未解决问题:

public class CompositeQueryContainerGenerator<T>: IQueryContainerGenerator<T> where T: class
{
    QueryContainer IQueryContainerGenerator.Generate(object source)
    {
        // some logic
    }

    QueryContainer IQueryContainerGenerator<T>.Generate(T source)
    {
        return ((IQueryContainerGenerator)this).Generate(source);
    }
}

如果我使用接口继承,也许原则上该问题无法解决。 如果是这样,哪种方法更可取?这两个接口的类实现是分开的吗?

0 个答案:

没有答案