C# 如何将委托传递给另一个类

C# 如何将委托传递给另一个类,c#,delegates,C#,Delegates,在我的主类“A”中,我声明了一个函数和一个委托来调用该函数,我想将我的委托传递给另一个类“B”,但类B如何知道委托的类型呢 甲级 public delegate void SendInfo(string[] info); SendInfo sendInfo = new SendInfo(SendInformation); //I have a function SendInformation B b = new B(); b.SetDelegate(sendInfo); B类 public

在我的主类“A”中,我声明了一个函数和一个委托来调用该函数,我想将我的委托传递给另一个类“B”,但类B如何知道委托的类型呢

甲级

public delegate void SendInfo(string[] info);
SendInfo sendInfo = new SendInfo(SendInformation); //I have a function SendInformation

B b = new B();
b.SetDelegate(sendInfo);
B类

public delegate void SendInfo(string[] info); //I know this is wrong but how will 
SendInfo SendInformation;                     //this class know what SendInfo is?

public void SetDelegate(SendInfo sendinfo)    //What type is this parameter?
{
    sendinfo.GetType();
    SendInformation = sendinfo;
}
谢谢


Eamonn

当您在类A中声明委托时,您将其声明为类A的子类型。例如,它的类型为
ClassA.SendInfo
。在B班你可以用

public void SetDelegate(ClassA.SendInfo sendinfo)

或者,在类A的代码之外声明委托-然后它将是另一种可以通过名称引用的类型(
SendInfo
)。

为什么要声明两种具有相同签名的独立委托类型?在任何其他类之外声明单个委托类型(如果确实必须-在可能的情况下使用
Func
Action
族),并在任何地方使用该委托类型

你需要意识到,当你写作时:

public delegate void SendInfo(string[] info);
这实际上是在声明一个类型——您可以直接在名称空间中声明该类型;它不必是其他类型的成员。

只需在名称空间中直接声明一次委托,而不是在类中声明一次。

就像Jon提到的那样,Action将是一个很好的委托类型,而不是定义一个新的委托类型。