如何从另一个类设置值

时间:2010-05-12 08:02:42

标签: c# .net

它说财产不应该只是“设置”(代码分析规则CA1044),它也应该是“获取”。如果我需要将值设置为来自其他类的变量,我该怎么办?

意志不断改变所以我无法通过构造函数传递它。

我应该为此创建一个函数,如下所示?

class A
{

    public void SetValue()
    {
        b = new B();
        b.SetTest(10);
    }
}

class B
{
   int test;

   public void SetTest(int value)
   {
       test = value;
   }
}

还有其他选择吗?

5 个答案:

答案 0 :(得分:3)

我同意这对于只写属性(从类视点的客户端)来说有点混乱,所以我试着避免它们,而是创建一种某种类型的set方法。

Microsoft推荐的方式似乎也是将其重写为方法(或者如果合适的话,使其读写):http://msdn.microsoft.com/en-us/library/ms182165.aspx

答案 1 :(得分:2)

如果您需要访问自己类中的变量,可以使用公共setter和私有getter。

class B {
   public int test { private get; set; }
}

答案 2 :(得分:0)

谁说财产不应该只使用set accessor?我没有看到它的设计缺陷。如果有的话,我会很高兴学到新东西:)

答案 3 :(得分:0)

你的意思是这样的吗?

   public int Test { get; set; }

答案 4 :(得分:0)

你的例子没有多大意义,因为你没有坚持B的实例,但你可以这样做:

class A 
{
    private B b;

    public A()
    {
        this.b = new B();
    }

    public void SetValue() 
    { 
        this.b.Test = 10;
    } 
} 

class B 
{ 
   int test; 
   public int Test
   {
       get{ return this.test; }
       set{ this.test = value; }
   }    
} 

另一种方法是使Test属性成为autoproperty(框架生成支持字段),如下所示:

class B 
{ 
   public int Test{get; set;}
}