Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.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
C# 服务类可以以及如何从普通类继承?_C#_Wcf_Inheritance_Service - Fatal编程技术网

C# 服务类可以以及如何从普通类继承?

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

我有两个服务TestService1和TestService2。我可以从没有ServiceBehaviorAttribute属性的普通类继承这两个服务吗?像这样:

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(); }
}