委托如何从引用的 class 调用父库事件

How delegate invoke parent library event from referenced class

我用 c sharp 编写了一个代码,其中我制作了两个 class 库,MathOperationCalculationManager

MathOperation 有 reference CalculationManager。现在我想做的是从 CalculationManager class.

调用 MathOperation class 方法

可能是代表帮我解决了这个问题,但问题是语法,需要一些语法或示例。 This 告诉我如何在同一个库上使用委托 class 需要有关如何在不同库中使用委托的帮助。

 class Programe
        {
            static void Main(string[] args)
            {
                //Creating a parent class
                CalculationManager p = new CalculationManager();
                p.Add();

            }

            /// <summary>
            /// this method call from child
            /// </summary>
            /// <param name="message"> child delegate deliver this parameter</param>
            public void AddImpact(string message)
            {

            }
        }

注意: CalculationManager class 没有引用 MathOperation。

您可以在 CalculationManager 中有一个事件被 MathOperator 挂钩。这是一个非常简单的例子,说明它是如何进行的。委托的工作方式没有区别,无论它们是在相同还是不同的库中定义和使用。

namespace ManagerLibrary
{
    public delegate int Operation(int x, int y);

    public class CalculationManager
    {
        public event Operation OperationNeeded;

        public int? Operate(int x, int y)
        {
            return (Operate != null)
                ? Operate(x, y)
                : (int?)null;
        }
    }
}

//In some other library
using ManagerLibrary;

namespace OperationLibrary
{
    public class MathOperation
    {
        public CalculationManager Manager { get; set; }

        public MathOperation(CalculationManager manager)
        {
            Manager = manager;
            Manager.OperationNeeded += Manager_OperationNeeded;
        }

        int Manager_OperationNeeded(int x, int y)
        {
            return x + y;
        }
    }
}

//Usage (maybe in a third library)
var manager = new CalculationManager();
var operation = new MathOperation(manager);

var result = manager.Operate(2, 3);