如何在只能使用附加分配设置的类中创建属性。我知道事件在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/

10-09 18:06