使用受保护的方法装饰类

Coo*_*ter 3 c# design-patterns

我想做与此处描述完全相同的事情,但在C#中.

public interface IFoo { void DoSomething(); }

public class Foo : IFoo
{
    public void DoSomething() {...}
    protected void Bar() {...}
}

public class Foo2 : IFoo
{
    private readonly Foo _foo;

    public Foo2 (Foo foo) { _foo = foo; }

    public void DoSomething() {...}

    protected void Bar()
    {
        _foo.Bar(); // cannot access Bar() from here
    }
}
Run Code Online (Sandbox Code Playgroud)

我看了几个类似的问题,但没有一个真正告诉你如何解决这个问题.试图用受保护的方法装饰一个类首先做错事吗?

Lee*_*Lee 5

受保护的方法仅对子类可见.如果FooFoo2是在同一个程序集中,你可以Foo.Bar改为内部:

public class Foo
{
    internal void Bar() { ... }
}
Run Code Online (Sandbox Code Playgroud)