Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.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#_Oop - Fatal编程技术网

C# 传递到构造函数中的变量是否可以作为属性使用?

C# 传递到构造函数中的变量是否可以作为属性使用?,c#,oop,C#,Oop,我的老板坚持以下规则:传入构造函数的所有变量都应该通过只读属性可用 我不认为这是真的,因为类应该做它应该做的,而不是向其他人提供它们的结构。我知道有时候这很有用,但这不是一般规律 我的想法正确吗?我错过什么了吗?任何人都可以添加更多的论点或反对 规则示例: public class MyClass { public MyClass(ISomeProvider someProvider) { SomeProvider = someProvider;

我的老板坚持以下规则:传入构造函数的所有变量都应该通过只读属性可用

我不认为这是真的,因为类应该做它应该做的,而不是向其他人提供它们的结构。我知道有时候这很有用,但这不是一般规律

我的想法正确吗?我错过什么了吗?任何人都可以添加更多的论点或反对

规则示例:

 public class MyClass
 {
      public MyClass(ISomeProvider someProvider)
      {
          SomeProvider = someProvider;
      }
      public ISomeProvider SomeProvider { get; private set; }
      public void DoSomeWork()
      {
          ...
      }
 }

谢谢。

它可以像规则一样应用于某些特定项目的某些特定部分(应该说,设计听起来很奇怪,但…),但它永远不会成为软件设计中的通用规则,即使是在单个项目的领域

我个人会说不。。。我从不相信有一条规则适用于所有人。如果参数在类内部使用,则无需公开它们

如果您将“原始”字符串密码传递到加密类中,您不会期望原始字符串在对象的整个生命周期内都可以访问,事实上,这样做可能会带来安全风险


但另一方面,有时你必须遵循团队/经理制定的标准。如果您认为该原则是错误的,请详细讨论支持/反对该观点的论点。

老板制定的规则有助于调试以了解对象的属性。这不是规则,您可以将其视为项目经理创建的设计模式

public class MyClass
{
    private ISomeProvider someProvider;

    public ISomeProvider SomeProvider
    {
        get
        {
            //logic here 
            return this._someProvider;
        }
    }

    public MyClass(ISomeProvider someProvider)
    {
        this._someProvider = someProvider;
    }

    public void DoSomeWork()
    {

    }
}

如果它没有达到一个明确的目的,我会怀疑是否会遵循任何这样的规则,这是为了测试框架的利益而存在的限制吗?我相信这是一种设计模式