gpt4 book ai didi

c# - 如何使用私有(private)方法调整 C# 类?

转载 作者:太空宇宙 更新时间:2023-11-03 17:46:02 24 4
gpt4 key购买 nike

我想用私有(private)方法适配一个类,让适配器调用这个私有(private)方法:

考虑这个类

public class Foo
{
private void bar()
}

我想要一个遵循命令模式的类,并在它的执行方法中调用 bar():

public class FooCommand
{
private Foo foo_;
public FooCommand(Foo foo)
{
foo_ = foo;
}
public void execute()
{
foo.bar();
}
}

任何想法将不胜感激。

谢谢!

最佳答案

我相信有很多选择:

  • 不使用 FooCommand,而是使用带有 Execute 方法的接口(interface) ICommand。然后以实现 ICommand 的方式声明 Foo:

    public class Foo : ICommand {
    private void bar() { ... }
    void ICommand.Execute() { bar(); }
    }

    我相信这是最有吸引力的解决方案:该方法仍然可以是私有(private)的;您不需要为每个 Foo 实例化一个额外的 FooCommand;并且您不需要为每个需要它的 X 类声明一个单独的 XCommand 类。

  • Foo 类中声明 FooCommand 类,使其成为一个嵌套类。然后 FooCommand 可以访问私有(private)方法。

  • 声明bar 方法publicinternal

  • 声明 bar 方法 protectedprotected internal 然后从 派生 FooCommand Foo.

  • 使用反射调用私有(private)方法(使用 Type.GetMethod 后跟 MethodBase.Invoke )。我相信大多数开发者会认为这是一个肮脏的 hack。

关于c# - 如何使用私有(private)方法调整 C# 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4200887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com