Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/269.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#中方法调用的设计概念(模式?)?_C# - Fatal编程技术网

c#中方法调用的设计概念(模式?)?

c#中方法调用的设计概念(模式?)?,c#,C#,我想创建一个结构,在这里我调用一个方法,这个方法参数应该只能从实例类中使用 我的确切意思是…,我有一个包含如下函数的类: public class Functions { public Request GetId(int item) { //return instanced request } public Request SetId(int item) { //re

我想创建一个结构,在这里我调用一个方法,这个方法参数应该只能从实例类中使用

我的确切意思是…,我有一个包含如下函数的类:

public class Functions
{
        public Request GetId(int item)
        {
            //return instanced request
        }

        public Request SetId(int item)
        {
            //return instanced request
        }
}
我有一个invoker类,它有一个名为Invoke(Request)的方法

我想使用Functions类作为该方法的参数,但接受的参数只能来自该类

实际上,我这样做是为了从Invoke方法类中的functions类创建一个实例,如下所示:

Functions Requests = new Functions();
Invoke(Requests.GetId(1));
…因此,当我想调用Invoke方法时,它如下所示:

Functions Requests = new Functions();
Invoke(Requests.GetId(1));
但是有没有办法解决这个问题,我只能调用实例类的请求,比如:

Invoke(GetId(1));
也许我的想法是错误的,但我希望,我想要达到的目标是明确的。(将函数与调用器类分开,但保持它们之间的关系)


谢谢大家!

为什么不让类和方法成为静态的

public static class Functions
{
        public static Request GetId(int item)
        {
            //return instanced request
        }

        public static  Request SetId(int item)
        {
            //return instanced request
        }
}
然后

使用静态函数

您将能够使用此syntex,然后:

Invoke(GetId(1))


但这不是好的做法

因为通过引入静态,您的代码更难测试和维护……@Callumlington问题是如何使这个
Invoke(GetId(1))有效。这个问题很奇怪,因为“测试和维护”并不是问题所在。你说“为什么不让类和方法
成为静态的”
“让你的问题开始讨论。我回答了你为什么不这么做。“当你给别人不好的建议时,你并不是在帮助他们。”卡姆林顿我同意他不应该那样做。但在给定的示例中,也没有其他方法以这种特定的方式调用给定的方法。我认为您应该仔细阅读,尤其是单一责任模式。当你用C#创建类时,你应该用一种能让你立即识别它们在做什么的方式来命名它们。因此,调用类
函数
是一个坏名字,因为它是一个泛型名称。将其称为
RequestModifiers
已经越来越近了,但仍然不太好,但我不知道该类要做什么。您应该调用其他方法中隐藏其意图的方法