The ServiceContract attribute specifies that a class or interface defines the communication contract of a Windows Communication Foundation (WCF) service. The service operations of this class or interface are defined by OperationContract attributes added to methods. It doesn’t make sense to define a contract without any service operations; thus, in a ServiceContract class or interface at least one method should be annotated with OperationContract. Similarly, WCF only serves OperationContract methods that are defined inside ServiceContract classes or interfaces; thus, this rule also checks that ServiceContract is added to the containing type of OperationContract methods.

Noncompliant Code Example

[ServiceContract]
interface IMyService // Noncompliant
{
  int MyServiceMethod();
}

Compliant Solution

[ServiceContract]
interface IMyService
{
  [OperationContract]
  int MyServiceMethod();
}