WCF 서비스를 사용하여 작업 계약 중 하나에서 List (IWatchable은 내가 작성한 사용자 지정 인터페이스)를 반환하려고합니다. 클라이언트에서 서비스를 테스트 할 때이 메서드는 List<IWatchable>
대신 object[]
을 반환합니다. IWatchable이 WCF와의 인터페이스이기 때문에 IWatchable 목록을 반환 할 수 있습니까?WCF를 통해 <Interface>리스트를 전달하려면 어떻게해야합니까?
방법 :
public List<IWatchable> GetWorkload(Guid nodeId, int maximum)
IWatchable :
public interface IWatchable
{
string ActionName { get; set; }
Guid ActionReference { get; set; }
}
다행스럽게도 필자는 파생 인터페이스가 추가 정보를 원하시면 도움이 될 것입니다 조금 ...
:
public interface IAMRAWatchable: IWatchable
을 그리고 3 개의 concre IAMRAWatchable
에서 테 구현 :
List<IWatchable>
은 내가
InstrumentationWatch
및 클라이언트에
OutputWatch
를 보낼 반환 나의 WCF 방법에
public class InstrumentationWatch: IAMRAWatchable
public class OutputWatch: IAMRAWatchable
etc...
...이게 가능이나 내가 잘못된 방향으로 이것에 대해 갈거야?
내가 내 해결책을 발견 존에
감사를 해결. KnownType
은 내가 사용하고 나서 작동하지 않았다. List<IWatchable>
- 그래서 나는 내 목록을 새로운 클래스로 싸고 속성을 추가했다. 난 내 코드를 팩터 다시해야하지만 여기에 관심이있는 사람들을위한 클래스입니다 :
[DataContract]
[KnownType(typeof(InstrumentationWatch))]
[KnownType(typeof(OutputWatch))]
public class WorkInfo
{
[DataMember]
public List<IWatchable> WorkQueue { get; set; }
}
는 내 WCF 방법 : 인터페이스가 직렬화 될 수 없다
public WorkInfo GetWorkload(Guid nodeId, int maximum)
클라이언트를 어떻게 만들었습니까 (scratch/svcutil/Add Service Reference에서)? –
두 결과 모두 동일하게 시도했습니다. – DennyFerra
KnownTypes 속성을 어떻게 구현했는지 보여 주시겠습니까? –