委托如何从引用的 class 调用父库事件
How delegate invoke parent library event from referenced class
我用 c sharp 编写了一个代码,其中我制作了两个 class 库,MathOperation 和 CalculationManager。
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);
我用 c sharp 编写了一个代码,其中我制作了两个 class 库,MathOperation 和 CalculationManager。
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);