0
namespace ScratchPad
{
    public class InterfaceTestBuilder : InterfaceTest1
    {
        public InterfaceTestBuilder Init()
        {

            return this;
        }

        public InterfaceTestBuilder Method1()
        {

            return this;
        }

        public InterfaceTestBuilder Method2()
        {

            return this;
        }

        public InterfaceTestBuilder Method3()
        {

            return this;
        }

    }

    public interface InterfaceTest1
    {
        InterfaceTestBuilder Init();
        InterfaceTestBuilder Method3();
    }

    public class Client
    {
        public void TestMethod1()
        {
            InterfaceTest1 test = new InterfaceTestBuilder();

            test.Init();
                    test.Method3();
            test.Init().Method1().Method2().Method3();
        }
    }
}

在 Client 类中,我的“测试”实例仅限于 Init() 和 Method3() 方法,但是在方法链中使用时,所有方法都可以访问。当我希望我的客户使用方法链时,如何使用接口来限制可以访问的方法?

我还应该提到,可能有另一个接口只公开另一组特定方法:

public interface InterfaceTest2
{
    InterfaceTestBuilder Init();
    InterfaceTestBuilder Method1();
}
4

1 回答 1

0

尝试将方法返回类型更改为InterfaceTest1

例如,将您的界面更改为:

public interface InterfaceTest1
{
    InterfaceTest1 Init();
    InterfaceTest1 Method3();
}

更改InterfaceTestBuilder以下方法的类实现:

public InterfaceTest1 Init()
{

    return this;
}
public InterfaceTest1 Method3()
{

    return this;
}

然后您将无法进行以下调用,因为调用Method1后将无法访问Init

    InterfaceTest1 test = new InterfaceTestBuilder();

    test.Init().Method1().Method2().Method3();
于 2013-06-29T18:43:41.217 回答