Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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控制台应用程序会话/存储_C#_Oop_Console - Fatal编程技术网

C# C控制台应用程序会话/存储

C# C控制台应用程序会话/存储,c#,oop,console,C#,Oop,Console,在控制台应用程序中实现psuedo会话/本地存储类的最佳方式是什么?基本上,当应用程序启动时,我会接受一些参数,这些参数是我希望在应用程序运行时对每个类可用的。我在想,我可以创建一个静态类,在应用程序启动时初始化值,但有没有更优雅的方法?如果您想获取命令行参数或其他超级复制程序设置,并将它们放在整个应用程序都可以看到的地方,我不知道为什么当应用程序启动时,你会认为把它们放在静态类中是不雅的。这听起来和你想做的完全一样。 如果你想使用命令行参数或其他超级Duffer设置,并把它们放在整个应用程序可

在控制台应用程序中实现psuedo会话/本地存储类的最佳方式是什么?基本上,当应用程序启动时,我会接受一些参数,这些参数是我希望在应用程序运行时对每个类可用的。我在想,我可以创建一个静态类,在应用程序启动时初始化值,但有没有更优雅的方法?

如果您想获取命令行参数或其他超级复制程序设置,并将它们放在整个应用程序都可以看到的地方,我不知道为什么当应用程序启动时,你会认为把它们放在静态类中是不雅的。这听起来和你想做的完全一样。

如果你想使用命令行参数或其他超级Duffer设置,并把它们放在整个应用程序可以看到的地方,我不知道为什么当应用程序启动时,你会认为把它们放在静态类中是不雅的。这听起来和您想要做的完全一样。

我通常创建一个名为“ConfigurationCache”的静态类或类似的类,可用于提供应用程序范围的配置设置

记住,你不想太沉迷于全球化。我郑重建议您查看一下您的设计,并通过方法参数传递您所需要的内容。您的设计应该是这样的,每个方法都会收到所需的参数参见代码完成2-Steve McConnell


这并不是说静态类是错误的,而是问问自己为什么需要将参数传递到各种类和方法中。

我通常创建一个名为“ConfigurationCache”的静态类或类似的类,可用于提供应用程序范围的配置设置

记住,你不想太沉迷于全球化。我郑重建议您查看一下您的设计,并通过方法参数传递您所需要的内容。您的设计应该是这样的,每个方法都会收到所需的参数参见代码完成2-Steve McConnell


这并不是说静态类是错误的,而是问问自己为什么需要将参数过度传递到各种类和方法中。

如果需要一个可以在代码中传递的对象,但静态类是可以的,那么可以使用单例设计模式,也可以。

如果您需要一个可以在代码中传递的对象,那么可以使用单例设计模式,但在我看来,静态类也很好。

坦白地说,我认为最优雅的方法是重新考虑您的设计,以避免全局变量。类应该被创建或接收它们需要构造的数据;方法应该对这些数据进行操作。您违反了封装,因为您创建了一个或多个类完成其工作所需的全局变量。

坦率地说,我认为最优雅的方法是重新考虑您的设计以避免全局变量。类应该被创建或接收它们需要构造的数据;方法应该对这些数据进行操作。通过创建一个或多个类执行其工作所需的全局变量,您违反了封装。

我建议可能实现一个单例类来管理您的psuedo会话数据。您将能够全局访问数据,同时确保只有一个类实例存在,并且在对象之间共享时保持一致


我建议可能实现一个singleton类来管理您的psuedo会话数据。您将能够全局访问数据,同时确保只有一个类实例存在,并且在对象之间共享时保持一致


将数据视为所有类所需的配置文件。每个类都可以访问该文件,因此通过静态类公开数据并没有什么错

但是每个类都必须知道配置文件的路径,路径的更改会影响许多类。当然,路径最好只在一个类中为常量,该类由所有需要该路径的类引用。因此,更好的解决方案是创建一个类来封装对配置文件的访问。现在,每个类都可以创建该类的实例并访问该文件的配置数据。因为您的数据不是由文件支持的,所以您必须构建类似于monostate的东西

现在您可以开始考虑类耦合了。这对你有关系吗?您是否计划编写单元测试,是否必须模拟配置数据?对在这种情况下,您应该开始考虑使用依赖项注入,并仅通过交互访问数据


因此,我建议使用接口使用依赖项注入,我将使用monostate模式实现该接口。

将数据视为所有类所需的配置文件。每个类都可以访问该文件,因此公开dat并没有什么问题 通过一个静态类创建一个

但是每个类都必须知道配置文件的路径,路径的更改会影响许多类。当然,路径最好只在一个类中为常量,该类由所有需要该路径的类引用。因此,更好的解决方案是创建一个类来封装对配置文件的访问。现在,每个类都可以创建该类的实例并访问该文件的配置数据。因为您的数据不是由文件支持的,所以您必须构建类似于monostate的东西

现在您可以开始考虑类耦合了。这对你有关系吗?您是否计划编写单元测试,是否必须模拟配置数据?对在这种情况下,您应该开始考虑使用依赖项注入,并仅通过交互访问数据


因此,我建议使用接口使用依赖项注入,我将使用monostate模式实现该接口。

是的,我正在使用IoC conatainer,并且正在按照您的建议包装我的App.Config设置。我想我应该以同样的方式只处理两个命令行参数,并通过IConfigSettings接口将它们注入到我的服务中。有意义吗?是的,我正在使用IoC Conataner,并且正在按照您的建议包装我的App.Config设置。我想我应该以同样的方式只处理两个命令行参数,并通过IConfigSettings接口将它们注入到我的服务中。有意义吗?静态类或静态方法和进程范围的数据没有错。例如System.Security.Principal.WindowsIdentity.GetCurrent.Name。Identity是进程环境信息的一个示例,非常适合静态方法或类。静态类或静态方法和进程范围的数据没有问题。例如System.Security.Principal.WindowsIdentity.GetCurrent.Name。Identity是进程环境信息的一个例子,非常适合静态方法或类。静态类或静态方法和进程范围的数据没有本质上的错误。例如System.Security.Principal.WindowsIdentity.GetCurrent.Name。Identity是进程环境信息的一个示例,非常适合静态方法或类。你不会把WindowsIdentity作为方法参数传递给别人吧?@Cheeso:同意。我想说的是,应该是进程范围内的数据与使之成为进程范围但实际上不应该是的数据之间有一个重要的区别。静态类或静态方法和进程范围内的数据没有本质上的错误。例如System.Security.Principal.WindowsIdentity.GetCurrent.Name。Identity是进程环境信息的一个示例,非常适合静态方法或类。你不会把WindowsIdentity作为方法参数传递给别人吧?@Cheeso:同意。我想说的是,应该是流程范围内的数据与创建流程范围内但实际上不应该是的数据之间有一个重要的区别。