比赛委托无重载

时间:2018-06-26 14:13:34

标签: c# events delegates

我有这种方法:

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参数)?

1 个答案:

答案 0 :(得分:1)

编译器说明了一切。

CS0123-InsertPageNumbering没有重载匹配委托CreateAreaEventHandler。

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

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

或围绕InsertPageNumbering方法创建包装器,例如

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

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