我有几个WCF服务,这些服务共享一些常用方法。所以,我用这些方法创建了一个基类(不是WCF服务),并使所有WCF服务都从这个类继承。像这样:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)]
public abstract class BaseService
其中一个WCF服务:
public class ExampleService : BaseService, IExampleService
{
我使用ServiceBehavior属性设置ConcurrencyMode和InstanceContextMode值,我的问题是:使用ServiceBehavior属性标记基类是正确的,并期望所有服务都继承ServiceBehavior属性的值或者我应该逐个标记所有WCF服务吗?
答案 0 :(得分:10)
是的,ServiceBehavior属性继承到子类,因为“ServiceBehaviorAttribute”类具有AttributeUsage属性,该属性未将“Inherited”值设置为False。
“AttributeUsageAttribute”类中“Inherited”的默认值为True。
一个简单的例子是在Abstract类中设置Namespace属性,并查看wsdl中反映的内容。