C# 一个静态类和一个普通类共享相同的配置?

C# 一个静态类和一个普通类共享相同的配置?,c#,configuration,C#,Configuration,我有一个在项目中共享的配置类: public class BarcodeConfig { public string LotStandardDigits { get; set; } public string LotOldStandardDigits { get; set; } public int LotOldNumofDigits { get; set; } public int LotStandardNumofDigits { get; set; } }

我有一个在项目中共享的配置类:

public class BarcodeConfig
{
    public string LotStandardDigits { get; set; }
    public string LotOldStandardDigits { get; set; }
    public int LotOldNumofDigits { get; set; }
    public int LotStandardNumofDigits { get; set; }
}
在我的主类实现中,我有两个类。一个是静态的(用于实用程序),另一个包含所有预期逻辑:

public static class BarcodeUtil
{
...
}

public class BarcodeBLL
{
...        
}

我希望能够对静态类和普通类使用相同的配置类。最好将配置类设为静态类还是不设静态类?

如果使用单元测试,最好不要设静态类,因为伪造它们要困难得多。这是一个有趣的讨论:


如果使用单元测试,最好不要使用静态类,因为很难伪造它们。这是一个有趣的讨论:


我更喜欢实例化配置对象。对于那些静态方法,我会将配置作为参数分别传递给每个utlility方法


这允许完全不同的模块同时为完全不同的目的使用实用程序方法,并使它们更具弹性。

我更喜欢实例化配置对象。对于那些静态方法,我会将配置作为参数分别传递给每个utlility方法


这允许完全不同的模块同时为完全不同的目的使用实用程序方法,并使它们更具弹性。

@e4rthdog:编辑我的答案,请参阅链接。@e4rthdog:编辑我的答案,请参阅链接。在我的配置类上使用OOP操作似乎是正确的。每次将配置传递给我的实用程序方法都会让人感觉不舒服因为每次我都会将目标设置为不同的域。对于我的普通类,我应该只在构造函数中传递对象吗?同意。但不要传递整个配置对象,只传递你想调用的helper方法所需的值。同意。静态实用类意味着无状态。@ValtasarIII:怎么做?你的意思是只传递fiel单独ds?@e4rthdog是的,对于普通类,传入构造函数对我来说没问题。这样做,你就可以用配置实例绑定你的实例,这是我喜欢的想法。在我的配置类上使用OOP操作似乎是正确的。每次将配置传递给我的util方法感觉也是正确的,因为每次我都会使目标域不同。对于我的普通类是否应该只在构造函数中传递对象?同意。但不要传递整个配置对象,只传递要调用的帮助器方法所需的值。同意。静态实用程序类意味着无状态。@ValtasarIII:怎么做?你的意思是只单独传递字段吗?@e4rthdog是的,对于在构造函数中传递的普通类是对我来说,这样做就是用一个配置实例绑定你的实例,这是我喜欢的想法。