Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#方法参数API设计_C#_Parameters_Methods_Arguments - Fatal编程技术网

c#方法参数API设计

c#方法参数API设计,c#,parameters,methods,arguments,C#,Parameters,Methods,Arguments,我想讨论API方法设计 我们正在构建一个c#dll,它将负责一些机器操作(如开门、关门等),我想向客户端公开一个函数(我们称之为“doAction(parameters…”)。此函数将获得一个参数,该参数是操作的类型(参数) 我的问题是:设计论点的最佳方式是什么?如果你能给我一些例子的链接。它可以是一个常量类。字符串或枚举类,任何可以专业设计但易于使用的内容 谢谢。看看 除此之外,您可能希望使用DoAction方法实现IAction 比如 interface IAction { void

我想讨论API方法设计

我们正在构建一个c#dll,它将负责一些机器操作(如开门、关门等),我想向客户端公开一个函数(我们称之为“doAction(parameters…”)。此函数将获得一个参数,该参数是操作的类型(参数)

我的问题是:设计论点的最佳方式是什么?如果你能给我一些例子的链接。它可以是一个常量类。字符串或枚举类,任何可以专业设计但易于使用的内容

谢谢。

看看

除此之外,您可能希望使用
DoAction
方法实现
IAction

比如

interface IAction
{
    void DoMethod();
}


将每种方法作为单独的方法公开似乎更为自然,如:

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;
        }
    }
}

为什么你只想要一种方法?使用像
OpenDoor(intdoornum)这样的方法似乎更为自然;关门(内门数,门砰的一声);OpenClosedOrAjar GetDoorState(intdoornum)忘记告诉了。这是我的设计要求。为什么在你的设计要求中?是客户让我为他开发dll的。这就是他们的工作方式。我看了你推荐的文章。这是一个有趣的方法,但我不知道它对我有什么帮助。关于界面,你能提供更多细节吗?谢谢。您可以将实现接口的类传递给该方法。因此,它们都实现了相同的方法,但做了它们应该做的事情。这将允许您使这个数据库/XMl成为驱动的。您需要向我们展示更多关于调用方法的信息,以及您如何决定执行哪个操作……太好了,这是一个很好的示例。谢谢
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;
        }
    }
}