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

时间:2016-02-25 04:45:52

标签: c# .net delegates invoke

我用c sharp编写了一个代码,其中我创建了两个类库 MathOperation CalculationManager

MathOperation具有CalculationManager的引用。现在我想要做的是我想从CalculationManager类调用MathOperation类方法。

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

 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类没有引用MathOperation。

1 个答案:

答案 0 :(得分:0)

您可以在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);