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很高兴我能提供帮助。