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

时间:2011-03-31 15:57:22

标签: c# delegates

在我的主要类'A'中,我已经声明了一个函数和委托来调用该函数,我想将我的委托传递给另一个类'B',但是B类将如何知道委托的类型?

A级

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;
}

谢谢,

埃蒙

3 个答案:

答案 0 :(得分:10)

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

public void SetDelegate(ClassA.SendInfo sendinfo)

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

答案 1 :(得分:10)

为什么要声明具有相同签名的两个单独的委托类型?声明单个委托类型(如果你真的必须 - 尽可能使用FuncAction系列)在任何其他类之外,并在任何地方使用它。

你写作时需要注意:

public delegate void SendInfo(string[] info);

确实声明了类型 - 您可以直接在命名空间中声明该类型;它不必是另一种类型的成员。

答案 2 :(得分:5)

只需在命名空间内直接声明代理 ,并在类中