c# - 在辅助类中使用静态方法与非静态方法

标签 c# oop static-methods

我有一个辅助类,它接受一些对象,处理它并返回另一个类的一些实例,甚至返回对象列表。 最好的方法是什么:使这个辅助方法静态或非静态? 问题是我的应用程序可以创建很多 Car 对象,我在想当它们每个都使用静态助手时是否会产生负面影响?

最佳答案

也许这是可以解决的问题,而无需决定您需要它的辅助对象的生命周期。

您应该尝试利用依赖注入(inject)方法:

public class X
{
   public X(IHelper helper)
   {
        Helper = helper;
   }

   private IHelper Helper { get; }

   public void DoStuff() 
   {
        var result = Helper.DoOtherStuff(input);
   }
}

也就是说,X 不知道 Helper 是否始终是同一个实例,或者它是否是一个 transient 对象。这使得代码更简洁、更易于测试,因为您可以使用假的 IHelper 实现来模拟帮助器,以确保您只是测试 X

关于c# - 在辅助类中使用静态方法与非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42053112/

相关文章:

c# - 返回任务而不是等待内部方法调用

python - 如何使用动态名称实现 property()(在 python 中)

java - 为什么 Java 不允许重写静态方法?

node.js - 在保存后中间件中使用静态方法

c# - 如何从数据库读取特定文本框为文本框背景颜色着色

c# - 按钮上没有可见文字,但屏幕阅读器需要文字?

C# 相当于 Java 实例初始化器

java - 如何将值(数组或数组列表)从一个 Pane 传递到另一个 Pane ?

c++ - 多种输出格式的设计模式

java - 静态方法总是同时返回