C# 服务类可以以及如何从普通类继承?
我有两个服务TestService1和TestService2。我可以从没有ServiceBehaviorAttribute属性的普通类继承这两个服务吗?像这样:C# 服务类可以以及如何从普通类继承?,c#,wcf,inheritance,service,C#,Wcf,Inheritance,Service,我有两个服务TestService1和TestService2。我可以从没有ServiceBehaviorAttribute属性的普通类继承这两个服务吗?像这样: public class ServiceBase { } [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] public class TestService1 : ServiceBase, ITestService1 { } [Servi
public class ServiceBase
{
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class TestService1 : ServiceBase, ITestService1
{
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class TestService2 : ServiceBase, ITestService2
{
}
behaviuor from ServiceBehaviorAttribute属性是否将应用于继承的普通类的继承成员
我必须向基本类添加一些特定于服务的属性吗
如果我在实现上出错,如何正确地实现这样一个继承-服务从另一个普通类继承一些行为
更新。
这不是关于你的。我问了一个更常见的问题——我可以从WCF服务类中的另一个类(例如,在外部DLL中,甚至与WCF不关联)继承一些功能吗?怎么做?我的代码是否有效且没有隐藏的细微差别?
[ServiceBehavior]
可以应用于基类,以便派生的服务类将继承该行为
更改此项:
public class ServiceBase
{
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class TestService1 : ServiceBase, ITestService1
{
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class TestService2 : ServiceBase, ITestService2
{
}
……为此:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class ServiceBase
{
}
public class TestService1 : ServiceBase, ITestService1
{
}
public class TestService2 : ServiceBase, ITestService2
{
}
我可以从WCF服务类中的另一个类(例如,在外部DLL中,甚至与WCF不关联)继承一些功能吗
当然,
ServiceBase
可以有TestService1
和TestService2
可以使用的方法。但是,即使ServiceBase.SomeMethod()
是公共的,WCF客户端也只能看到在接口ITestService1
和ITestService2
上定义的方法
e、 g
对于基类与WCF无关的更新,“是的,您可以”。它与调用任何其他基类没有什么不同。的可能重复。虽然我不知道为什么在派生类上有相同的
[ServiceBehavior]
。你不想在ServiceBase
@MickyD上使用它吗好吧,继承[ServiceBehavior]是一个选项,但在我的情况下不是强制性的。我问了一个更常见的问题-我可以从WCF服务类中的另一个类(例如,在外部DLL中,甚至与WCF没有关联)继承一些功能吗?当然,ServiceBase
可以有TestService1
和TestService2
可以使用的方法。但是,即使ServiceBase.SomeMethod()
是public
,WCF客户端也只能看到在接口ITestService1
和ITestService2
上定义的方法。这就是你的意思吗?@MickyD是的。它是。我想在服务的内部部分添加一些功能,这些功能是客户端看不到的。如果你把它作为答案发布,我会接受它。@Damien_,我想知道隐藏的困难-我问了关于基类或其他东西的附加属性。我没有太多的经验,所以我不知道一些细微的差别。“关于基类与WCF无关的更新,“是的,你可以”。这与调用任何其他基类没有什么不同。”-那么我可以将[ServiceBehavior]保留在派生类中,而将基类保留为不带此属性吗(假设它服务于不需要[ServiceBehavior]功能的另一个类,或者我无法更改基类)?@Alex34758正确。您的基类可以没有任何WCF属性;并且可以位于另一个程序集中。
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class ServiceBase
{
// TestService1 and TestService2 may call me
// but not WCF clients. I'm invisible
public void SomeMethod () {}
}
public class TestService1 : ServiceBase, ITestService1
{
public void SomeServiceMethod1() { SomeMethod(); }
}
public class TestService2 : ServiceBase, ITestService2
{
public void SomeServiceMethod2() { SomeMethod(); }
}