如何在只能使用附加分配设置的类中创建属性。我知道事件在C#中以这种方式工作。我想知道如何在自己的代码中实现该构造。
例如。对于活动,我可以执行以下操作
public event EventHandler myEventHandler;
myEventHandler += NewEvent;
这会将
NewEvent
添加到调用myEventHandler
时运行的事件链中。我希望能够做类似的事情。我想创建一个
Graph
类,该类为带有节点和连接的数学图建模。 Graph
类将具有nodes
属性,该属性只能添加或删除节点,而不能设置为整个属性。再次使用
EventHandler
示例,我不能对EventHandler
执行以下操作myEventHandler = OnlyOneEventWillRun;
我还希望能够实现类似于
set{}
访问器的附加分配逻辑。 最佳答案
对于初学者来说,myEventHandler
是一个多播委托-您可以自己镜像该功能,但这并不能真正解决您所说的问题。
我采用的方法是使用私有设置器(或根本不使用任何设置器)-这将允许您从定义属性的类中设置值(大概您会知道并记住您在做什么),但不能从课外(其他开发人员可能不经意间将其搞砸了):
private List<object> _nodes; // private backing field
public List<object> Nodes
{
get
{
return _nodes; // can be "gotten" by any class
}
private set // can only be set from within this class
{
if (value != _nodes)
{
// do additional logic
_nodes = value; // set the backing variable
}
}
}
public void AddNode(object Node)
{
Nodes.Add(Node);
}
public void RemoveNode(object Node)
{
Nodes.Remove(Node);
}
关于c# - 变量C#的加法赋值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52169046/