2012-01-26 4 views
1

이 WCF 서비스 클래스를 사용할 때 상속 된 클래스가 노출되지 않는 이유는 무엇입니까?WCF 공개 상속 된 클래스

[ServiceContract] 
public interface IMyService 
{ 
    [OperationContract] void DoSomething(); 
} 

[DataContract] 
public abstract class InheritMe 
{ 
    [DataMember] public int ExposeMe { get; set; } 
} 

public class MyService : InheritMe, IMyService 
{ 
    public void DoSomething() { } 
} 

내 코드는 Framework 4의 Visual Studio 2010 Pro에서 빌드하는 C#입니다.

미리 감사드립니다.

+0

정확히 노출되지 않음을 의미합니까? –

+0

클라이언트 응용 프로그램에서 ExposeMe DataMember가 노출되지 않습니다. –

+0

왜 서비스 클래스를 데이터 계약으로 만들고 싶습니까? – RQDQ

답변

2

ExposeMe은 서비스 계약의 일부가 아닙니다. 클라이언트 응용 프로그램에서 호출 할 수 있으려면 계약 인터페이스 IMyService에 정의해야합니다.

서비스 클래스 (MyService)가 DataContract에서 상속받는 것이 조금 이상합니다. 이것은 목적이 없습니다. DataContact 클래스는 클라이언트와 통신 할 수있는 클래스입니다 (예를 들어 서비스 작업에서 반환 할 수 있음). MyService 클래스는 서비스 계약의 구현 일 뿐이며 클라이언트에게는 보이지 않습니다.

+0

실제 코드에서 ExposeMe 속성을 사용하는 InheritMe 클래스의 메서드가있었습니다. 고마워, 나는 네가 제안한 것을 시도 할 것이다. –

+0

작동하지만 불행히도 MySqlCommand.MySqlTransaction이 직렬화 가능하지 않다는 것을 기억합니다. 하하. 다시 한번 감사드립니다. –