C#方法参数API设计

发布于 2024-10-05 04:55:39 字数 1539 浏览 1 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

总攻大人 2024-10-12 04:55:39

看看 Action Delegate

除此之外,您可能还想实现一个 IAction 界面 使用 DoAction 方法。

所以,类似

interface IAction
{
    void DoMethod();
}

public class OpenDoor : IAction
{
    public void DoMethod()
    {
        //Open the door
    }
}

Have a look at Action Delegate

Other than that, you might want to implement an IAction interface with a DoAction Method.

So, something like

interface IAction
{
    void DoMethod();
}

and

public class OpenDoor : IAction
{
    public void DoMethod()
    {
        //Open the door
    }
}
停滞 2024-10-12 04:55:39

将每个方法公开为单独的方法似乎更自然,如下所示:

public class Machine
{
    public void OpenDoor();
    public void CloseDoor();
    // other methods
}

这将按如下方式使用:

Machine NewMachine = new Machine();
NewMachine.OpenDoor();
NewMachine.CloseDoor();

该代码非常可读。

但是,如果您确实有兴趣通过一种方法完成所有操作,那么枚举值就足够了:

public class Machine
{
    public enum Action
    {
        OpenDoor,
        CloseDoor,
        // other values
    }

    public void DoAction(Action ActionToDo)
    {
        switch(ActionToDo)
        {
            case OpenDoor:
                // open the door
                break;
            case CloseDoor:
                // close the door
                break;
            default:
                break;
        }
    }
}

It seems more natural to expose each of these as a separate method, as in:

public class Machine
{
    public void OpenDoor();
    public void CloseDoor();
    // other methods
}

This would be used as follows:

Machine NewMachine = new Machine();
NewMachine.OpenDoor();
NewMachine.CloseDoor();

That code is very readable.

However, if you're really interested in doing it all from one method, then an enumerated value can suffice:

public class Machine
{
    public enum Action
    {
        OpenDoor,
        CloseDoor,
        // other values
    }

    public void DoAction(Action ActionToDo)
    {
        switch(ActionToDo)
        {
            case OpenDoor:
                // open the door
                break;
            case CloseDoor:
                // close the door
                break;
            default:
                break;
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文