제네릭 인터페이스를 사용하는 메서드가 포함 된 서비스 계약을 구현하려고하는데 일반 인터페이스 자체에 인터페이스 매개 변수가 제공됩니다. 내가 ServiceKnownType와 서비스 인터페이스를 장식 한, 나는 일반 KnownType와 서비스 구현을 장식 한, 나는 일반 KnownType와 datacontract 구현 장식 한 : 그것은 보인다 때문에 공식적으로WCF : 일반 인터페이스의 직렬화가 가능합니까?
[ServiceContract(SessionMode = SessionMode.Required, CallbackContract = typeof(ICallbacks))]
[ServiceKnownType(typeof(Batch<object>))]
[ServiceKnownType(typeof(Command))]
public interface IActions
{
[OperationContract]
IResponse TakeAction(IBatch<ICommand> commands);
}
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single, ConcurrencyMode = ConcurrencyMode.Reentrant)]
[KnownType(typeof(Batch<object>))]
[KnownType(typeof(Command))]
internal class Actions : IActions
{
}
[DataContract]
[KnownType(typeof(Command))]
public class Batch<T> : IBatch<T>
{
}
을, 나는 배치가있다 한 번만 제네릭 형식에 대한 knowntype을 표현할 수 있습니다. BatchOfanyType을 방출하는 것처럼 보이지만이를 처리하는 방법을 모르겠습니다.
예외는 "KnownTypeAttribute 특성을 사용하거나 DataContractSerializer에 전달 된 알려진 형식 목록에 추가하여 알려진 형식 목록에 정적으로 알려져 있지 않은 형식을 정적으로 추가하는 것입니다."
잘못된 것이 있습니까? 인터페이스의 일반 인터페이스는 지원되지 않습니까? 레코드의 경우이 프로젝트를 위해 C# 2.0 및 .NET 3.0에 있습니다.
네, C# 4.0에서 공분산을 생각할 때 사용하고있는 플랫폼에서 편집했습니다. 아, 업 그레 이드. – bwerks