Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 操作行为属性继承_Wcf - Fatal编程技术网

Wcf 操作行为属性继承

Wcf 操作行为属性继承,wcf,Wcf,我的服务有基类。若在基类中定义了属性OperationBehavior,并且在派生类中重写了方法,则该属性OperationBehavior不适用。当然,我可以复制代码,但也许还有其他方法 [ServiceContract] public interface IMyService { [OperationContract] void DoWork(); } public class MyServiceBase {

我的服务有基类。若在基类中定义了属性OperationBehavior,并且在派生类中重写了方法,则该属性OperationBehavior不适用。当然,我可以复制代码,但也许还有其他方法

[ServiceContract] public interface IMyService { [OperationContract] void DoWork(); } public class MyServiceBase { [OperationBehavior(TransactionScopeRequired = true)] public virtual void DoWork() { } } public class MyService : MyServiceBase, IMyService { public override void DoWork() { //No Transaction, because attribute OperationBehavior doesn't apply. } } [服务合同] 公共接口IMyService { [经营合同] 无效销钉(); } 公共类MyServiceBase { [操作行为(TransactionScopeRequired=true)] 公共虚拟空工作() { } } 公共类MyService:MyServiceBase,IMyService { 公共覆盖无效DoWork() { //没有事务,因为属性OperationBehavior不适用。 } }
您需要执行以下操作:

public class MyServiceBase
{
    [OperationBehavior(TransactionScopeRequired = true)]
    public void DoWork()
    {
        DoWorkImpl();
    }

    protected virtual DoWorkImpl()
    {
    }
}

public class MyService : MyServiceBase, IMyService
{
    protected override void DoWorkImpl()
    {
        //Should have a Tx here now
    }
}