C#:Subclass List <Something>?

Den*_*gan 2 c# interface subclass

我有一个EqualCondition实现我自己的接口的类ICondition,它只有一个方法:SatisfiedBy(Something).

public class EqualCondition : ICondition {
    private Something m_Something;

    public HelloCondition(Something something) {
        m_Something = something;
    }

    // Magic!!!
    public bool SatisfiedBy(Something something) {
        return something == m_Something;
    }
}
Run Code Online (Sandbox Code Playgroud)

所以ICondition实现起来非常简单.现在我正在尝试创建一个CombinationCondition也实现它.这个想法是CombinationCondition包含一个IConditions 列表,它将决定是否SatisfiedBy成功.

我的第一个想法是制作CombinationCondition工具,IList<Something>但我很快意识到我只是重复List<Something>.那么为什么不只是将它子类化呢?

这个想法听起来很好,直到我再次开始考虑SatisfiedBy如果我只是继承了如何实现List<Something>.我需要去做:

return innerList.All(x => x.SatisfiedBy(something))
Run Code Online (Sandbox Code Playgroud)

但是如何访问内部列表?

Ree*_*sey 5

就个人而言,对于您正在展示的用例,我只想制作这个工具IEnumerable<Condition>.然后,您可以通过调用(internal,encapsulated)List<Condition>方法来实现GetEnumerator .

潜在地,ICollection<Condition>可能更有意义(因此您可以在运行时添加条件),但仅限于您需要该功能.IList<T>对于我将看到的用例,在这种情况下实现似乎有些过分.