C# 没有重载匹配委托

C# 没有重载匹配委托,c#,events,delegates,C#,Events,Delegates,我有这个方法: public static void InsertPageNumbering(object sender, CreateAreaEventArgs e, BaseOracleUtils OraCon) { PCK.SetData(OraCon); } 如何将其分配给事件: compositeLink.CreateMarginalFooterArea += BaseSettingsInit.InsertPageNumbering; CreateMarginalFoote

我有这个方法:

public static void InsertPageNumbering(object sender, CreateAreaEventArgs e, BaseOracleUtils OraCon)
{
   PCK.SetData(OraCon);
}
如何将其分配给事件:

 compositeLink.CreateMarginalFooterArea += BaseSettingsInit.InsertPageNumbering;
CreateMarginalFooterArea具有以下参数:

 public delegate void CreateAreaEventHandler(object sender, CreateAreaEventArgs e);

是否有任何选项赋值方法(保留OraCon参数)?

编译器会一目了然

CS0123-InsertPageNumber与委托CreateAreaEventHandler匹配时没有重载。

如果您能够将方法分配给事件,那么在事件调用期间应该发生什么?应将
BaseOracleUtils
的哪个值作为
OraCon
参数传递

不幸的是,您也不能为最后一个参数提供默认值。我看到的唯一解决方案是扩展委托以接受另一个参数

或者围绕
InsertPageNumbering
方法创建一个包装,例如

public static void InsertPageNumberingWrapper(object sender, CreateAreaEventArgs e)
{
    InsertPageNumbering(sender, e, GetBaseOracleUtils());
}

这将提供一些合理的值作为它的最后一个参数。然后将此包装器添加到事件中
GetBaseOracleUtils()
可以从某个地方提取值(我不知道您试图解决什么问题,以及值应该从哪里来)。

这在C中不起作用,因为方法和委托没有相同的参数,我理解这一点,但是否有人可以选择将变量设置为InsertPageNumber方法,或者您有其他想法?您的示例帮助我解决了我的问题,非常感谢。@Archi.Moore很高兴我能提供帮助。