c#-仅允许从特定的类/实例设置属性
作者:互联网
想象一下,我有两个类A和B,其中B具有属性BProperty1和BProperty2.
>属性BProperty1只能由A类设置(无论哪种情况)
>属性BProperty2只能由类A的具体实例设置(对此实例的引用可以例如存储在BProperty1上).
是否有可能实现这样的目标,是否可能有一种模式?请注意,A和B是独立的,它们都不是彼此衍生的!我正在使用C#和WPF.感谢您的提示!
编辑
一个例子:
想象一下,一辆汽车和一辆车门.每当将CarDoor添加到Car时,都会将CarDoors属性AssociatedCar设置为其分配给的Car,因为稍后需要此引用.但是,如何确保AssociatedCar属性不是由用户设置的,而是由调用AddCarDoor(door)的Car类设置的?
class Car
{
private List<CarDoor> _carDoors = new List<CarDoor>();
public Car()
{
}
public void AddCarDoor(CarDoor door)
{
// Add the door to the car
_carDoors.Add(door);
// Save a reference to the car assigned to the door
door.AssociatedCar = this;
}
}
class CarDoor
{
public Car AssociatedCar;
public CarDoor()
{
}
}
解决方法:
您可以锁定设置器,然后将解锁对象所需的对象设为A类私有.
编辑:看完您的编辑后,我建议您将车门作为class car的成员,以了解汽车是如何由x个门组成的.也许是车门的集合.将该成员变量设为私有.这样,轿厢类别之外的任何内容都将无法编辑轿厢门的属性.
Edit2:同样,在轿厢和轿厢门之间建立双向关联(即,轿厢门具有关联的轿厢,而轿厢具有关联的轿厢门)有点多余.我不明白您为什么需要它-只需为车门设置一个public get属性,以便您可以在车类之外使用该数据.
例…
Class Car
{
private List<CarDoor> carDoors;
Car()
{
this.carDoors = new List<CarDoor>();
}
public List<CarDoor> getCarDoors
{
return this.carDoors;
}
}
标签:wpf,c,design-patterns 来源: https://codeday.me/bug/20191210/2098181.html