如何在不同对象之间共享本地属性的值?

时间:2017-11-17 09:04:19

标签: c# .net

好的,我正在使用看起来像这样的代码,

class A
{
   public bool ProprertyDummy
   {
      get;
      set;
   }
}

class B
{
   void method()
   {
      A obj1 = new A();
      //Set and get obj1.ProprertyDummy
      //Share the PropertyDummy with method of class C
   }
}

class C
{
   void method()
   {
      A obj2 = new A();
      //Set and get obj2.ProprertyDummy
      //Share the PropertyDummy with method of class B
   }
}

class D
{
   void method()
   {
      A obj3 = new A();
      //Set and get obj3.ProprertyDummy
      //Should not affect the property PropertyDummy shared by methods of class B and C
   }
}

现在我要做的是在类B和C的方法之间共享类A的属性,即PropertyDummy,但不是D。不定义来自不同类的方法将执行的顺序,甚至可能来自一个其他类方法的类方法。

注意:我只想在B和C中共享属性PropertyDummy而不是A类的其他成员。

任何人都可以建议某种方式来实现我想要做的事情。任何帮助表示赞赏。

例如,现在让我们考虑一个具有属性Text的类Visibility。现在,包含TextNumbers(不是继承)对象的两个不同的类TextAlphabetsText想要共享属性,以便1中的更改​​将反映在其他属性中。但是没有明确的使用顺序。 现在,其他类TextSymbols也有Text的对象,但不共享该属性。

2 个答案:

答案 0 :(得分:1)

为B,C,D类创建构造函数并将它们注入类对象

public interface IA
{
    bool PropertyDummy { get; set; }
}

public class A : IA
{
    public bool ProprertyDummy { get; set; }
}

public class B {
    private IA _ia;
    public B(IA ia) { _ia = ia; }
    void method()
    {
        IA obj1 = _ia;
    }
}

public class C {
    private IA _ia;
    public C(IA ia) { _ia = ia; }
    void method()
    {
        IA obj1 = _ia;
    }
}

public class D {
    private IA _ia;
    public D(IA ia) { _ia = ia; }

    void method()
    {
        IA obj1 = _ia;
    }
}

然后具体使用

var aObject1 = new A();
var aObject2 = new A();
var bObject = new B(aObject1);
var cObject = new C(aObject1);
var dObject = new D(aObject2);

然后向B和C实例注入相同的A类对象。另一个A类对象注入到D类对象中。这种方式可能只是解决方案

答案 1 :(得分:-2)

因为ob1,obj2和obj3是A类的3个不同实例,所以该属性不会以任何方式相互影响,我想