首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

接口 Delegate EVETN 的困扰,该如何解决

2012-01-05 
接口DelegateEVETN的困扰Delegate是不是不支持object类型的参数,我用只有string/int类型参数的都没问题,可

接口 Delegate EVETN 的困扰
Delegate   是不是不支持   object   类型的参数,   我用只有string/int类型参数的都没问题,可是有object   类型的系统就报错:

“ININ.Utility.cPredicitveWatcher”不会实现接口成员“PREDICTIVEDIALCOM2Lib.IEICClientCallback2.PostMessage(int,   object)”。“ININ.Utility.cPredicitveWatcher.PostMessage(int,   object)”或者是静态、非公共的,或者有错误的返回类型。


这是接口程序:
namespace   PREDICTIVEDIALCOM2Lib
{
        [TypeLibType(4160)]
        [Guid( "7E667602-5448-45FB-B4F6-948E3E20AC25 ")]
        public   interface   IEICClientCallback2
        {
                [DispId(7)]
                void   CampaignTransition(string   p_Workflow,   string   p_NewCampaign,   string   p_NewUrl);
                [DispId(6)]
                void   DataPop(object   p_Names,   object   p_Values);
                [DispId(9)]
                void   DebugError(string   p_ErrorText);
                [DispId(5)]
                object   PostMessage(int   p_Message,   object   p_Params);
                [DispId(1)]
                void   PreviewCallAdded(object   p_Names,   object   p_Values);
                [DispId(8)]
                void   SetFormDefinition(object   p_FormDef,   object   p_FormDispositions,   object   p_FormExtensions,   object   p_FormMisc);
                [DispId(4)]
                void   ShutdownClient(string   p_Message);
                [DispId(2)]
                void   WorkflowStarted(string   p_Workflow);
                [DispId(3)]
                void   WorkflowStopped(string   p_Workflow);
        }
}

这是我自己写的:
namespace   ININ.Utility
{
        public   class   cPredicitveWatcher   :   PREDICTIVEDIALCOM2Lib.IEICClientCallback2
        {   public   cPredicitveWatcher()     {}
                 
                public   delegate   void   OnCampaignTransitionDelegate(string   p_Workflow,   string   p_NewCampaign,   string   p_NewUrl);
                public   delegate   void   OnDataPopDelegate(object   p_Names,   object   p_Values);
                public   delegate   void   OnDebugErrorDelegate(string   p_ErrorText);
                public   delegate   void   OnPostMessageDelegate(int   p_Message,   object   p_Params);
                public   delegate   void   OnPreviewCallAddedDelegate(int   p_Message,   object   p_Params);


                public   delegate   void   OnSetFormDefinitionDelegate(object   p_FormDef,   object   p_FormDispositions,   object   p_FormExtensions,   object   p_FormMisc);
                public   delegate   void   OnShutdownClientDelegate(string   p_Message);
                public   delegate   void   OnWorkflowStartedDelegate(string   p_Workflow);
                public   delegate   void   OnWorkflowStoppedDelegate(string   p_Workflow);

                public   event   OnCampaignTransitionDelegate   CampaignTransitionEvent;
                public   event   OnDataPopDelegate     DataPopEvent;
                public   event   OnDebugErrorDelegate   DebugErrorEvent;
                public   event   OnPostMessageDelegate   PostMessageEvent;
                public   event   OnPreviewCallAddedDelegate   PreviewCallAddedEvent;
                public   event   OnSetFormDefinitionDelegate   SetFormDefinitionEvent;
                public   event   OnShutdownClientDelegate   ShutdownClientEvent;
                public   event   OnWorkflowStartedDelegate   WorkflowStartedEvent;
                public   event   OnWorkflowStoppedDelegate   WorkflowStoppedEvent;


#region   cPredicitveWatcher   Members

                  public     void   CampaignTransition(string   p_Workflow,   string   p_NewCampaign,   string   p_NewUrl)
                {
                          if   (!(CampaignTransitionEvent==null))
                                  CampaignTransitionEvent(p_Workflow,p_NewCampaign,p_NewUrl);
                               
                }
                public     void   DataPop(object   p_Names,   object   p_Values)
                {
                        if   (!(DataPopEvent   ==   null))
                                DataPopEvent(p_Names,   p_Values);
                }
                public         void   DebugError(string   p_ErrorText)
                {
                        if   (!(DebugErrorEvent   ==   null))


                                DebugErrorEvent(p_ErrorText);
                }
                public   void     PostMessage(int   p_Message,   object   p_Params)
                {
                        if   (!(PostMessageEvent   ==   null))
                                PostMessageEvent(p_Message,   p_Params);
                }
          .....




[解决办法]
接口定义的和类中实现的不一致.必须实现接口内所有方法和属性
object PostMessage(int p_Message, object p_Params);

[解决办法]
to Delegate 是不是不支持 object 类型的参数

不是,事件中的Sender参数类型不就是object

热点排行