问题标签 [static-classes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java内部类和静态嵌套类
Java中内部类和静态嵌套类之间的主要区别是什么?设计/实施是否在选择其中之一时发挥作用?
c# - 什么是“静态”类?
在 C# 中有什么区别:
和:
.net - ASP.NET MVC、ActionFilters、静态类和传递数据
我想听听您的意见,也许对以下情况有更好的建议:
我已经定义了一个自定义的 ActionFilter 来完成一些工作并产生一些价值。我想在控制器操作和模型中使用该值。
现在,我可以使用 TempData 将该值从 ActionFilter 传递给任何控制器操作方法,然后将该值分配给传递给返回视图的所有模型。
我确信它会起作用,但是这个 TempData 将在会话中出现,在没有人真正需要它的地方和时间。该值应该在单个请求期间仅在代码中使用,之后它有效地无效。
我提出了两个选择:
在 ActionFilter 中,我在 OnActioExecuting() 的 TempData 中设置了该值,并在 OnActionExecuted() 中将其删除。我是否正确理解,在调用 OnActionExecuted 时,控制器操作已完成,响应已生成,并且此 TempData 内容尚未进入会话?
在我的任何自定义静态类(逻辑)中,我只为这个值定义一个公共属性,并在需要时使用它。这个静态字段在 OnActionExecuting() 和实际执行控制器方法之间不会丢失吗?在服务器上的请求处理期间是否有可能丢失此值的任何其他问题?
我还没有考虑过其他/更好的选择吗?
c# - 在静态类中包装会话处理
我将所有直接会话交互分离到一个单独的类中并使其成为静态,因为我不想多次创建新对象。但是,我希望确保没有并发问题或其他奇怪的惊喜。
这是代码:
c# - 为什么静态类不能实现接口?
可能重复:
为什么 C# 不允许静态方法实现接口?
在我的应用程序中,我想使用一个存储库来进行原始数据访问(TestRepository
、、SqlRepository
等FlatFileRepository
)。因为这样的存储库将在我的应用程序的整个运行时使用,所以将它设置为静态类对我来说似乎是明智之举,这样我就可以去
无需一直重新生成它。因为我希望我的存储库是可互换的,所以我希望它们实现一个通用接口:IRepository
. 但是当我尝试这样做时,我得到:
静态类不能实现接口
为什么他们不能?你如何建议我改变我的设计呢?有我可以使用的模式吗?
更新
五年后:这个问题被访问了 20k+ 次,我了解了存储库模式的缺点,了解了 IoC 并意识到我的问题表述得很糟糕。
我并没有真正问接口的 C# 规范是什么,而是为什么它故意以这种特定方式限制我。
实际的答案是在实例或类型上调用方法的语法是不同的。但问题已经结束。
static-classes - 你应该避免静态类吗?
静态类被认为是不好的做法吗?几天前我读了一篇关于这个的文章(找不到它,抱歉),它基本上说拥有静态类(尤其是那些“帮助”类)通常是错误代码的标志。这是正确的,如果是,是什么原因?
c# - 在 C# 中扩展 Enumerable 类?
我有情况在 c# 中扩展 Enumerable 类以添加接受长参数的新 Range 方法。我无法定义这样的方法
由于扩展方法只能通过其对象访问。它给了我一个错误
'System.Linq.Enumerable':静态类型不能用作参数
有人可以澄清我如何做到这一点
注意:我知道我们可以在没有扩展方法的情况下轻松解决这个问题,但我需要这个 Enumrable 类。
.net - 模拟静态类
我有一个静态类,它包装了一些来自 winspool 的本机方法:
我想模拟它们进行单元测试,但找不到这种模式。(每个人都避免使用静态类吗?)
c# - 静态类的扩展方法?
我知道我可以执行以下操作来扩展课程。我有一个我想扩展的静态类。我该怎么做?我想写ClassName.MyFunc()
c# - 奇怪的静态类问题
下面是我非常简单的静态类。不知道出了什么问题。我在具有正确“使用”语句的非静态类中使用它。Intellisense 看到类和它的一种方法。
我收到错误
当前上下文中不存在名称“SQLUserDataManager”。
更新:这是我正在使用它的行。
问题解决了
我有一个 DLL,其中包含编译时出错的文件。在这个 DLL 中,我还没有包含包含这个文件的新文件。我包含了文件,一切都很好!^_^