C# 如何将委托传递给另一个类
在我的主类“A”中,我声明了一个函数和一个委托来调用该函数,我想将我的委托传递给另一个类“B”,但类B如何知道委托的类型呢 甲级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
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将是一个很好的委托类型,而不是定义一个新的委托类型。