EntLib PIAB 自定义CallHandler的一个BUG

个人习惯在类中实现接口统一用显式实现, 没想到今天因为这个习惯浪费了一整天的时间, 差点就要砸键盘了恶魔

 
    
[ConfigurationElementType(typeof(CustomCallHandlerData))] 
public class MyAuthCallHandler : ICallHandler
{
    private int order = 0;
 
    
    public MyAuthCallHandler()
    {
    }
    public MyAuthCallHandler(NameValueCollection attributes)
    {
    }
 
    
    IMethodReturn ICallHandler.Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
    {
        Console.WriteLine("icallhandler.invoke| " + input.MethodBase.DeclaringType.FullName + "::" + input.MethodBase.Name);
        return getNext()(input, getNext);
    }
 
    
    int ICallHandler.Order
    {
        get
        {
            return order;
        }
        set
        {
            order = value;
        }
    }
}
 
    

就这么简单的一个玩意, 用Attribute应用到Method一切正常

 
    
[AttributeUsage(AttributeTargets.Method)]
public class MyAuthCallHandlerAttribute : HandlerAttribute
{
    public override ICallHandler CreateHandler(Microsoft.Practices.Unity.IUnityContainer container)
    {
        return new MyAuthCallHandler();
    }
}
 
    

当我想用config文件进行配置的时候, 恶梦来了, 实例化对象的时候死活说参数为null, 一开始以为是CustomCallHandlerData的问题,找了半天资料悲伤

最后一个个排除, 原来居然是CallHandler的接口显式实现的问题, 悲剧~~

改成:

 
    
public  IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
public int Order
 
    

一切正常了, 莫名其妙  :(

posted on 2010-11-23 23:14  kingcomxu 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/sweethome/archive/2010/11/23/entelib_piab_custom_callhandler_bug.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值