WCF DataContract vs DataContract Interface

Новое для WCF.

Может ли класс DataContact наследовать из интерфейса?

например:

[DataContract(Namespace = ...........)]
public class VesselSequence : IVesselSequence
{

    [DataMember]
    public int AllocationId { get; set; }

    [DataMember]
    public string ScenarioName { get; set; }
}

interface VesselSequence : IVesselSequence
{
    public int AllocationId { get; set; }
    public string ScenarioName { get; set; }
}

Ответ 1

Вы можете сделать это:

[DataContract(Namespace = ...........)]
public class VesselSequence : IVesselSequence
{
    [DataMember]
    public int AllocationId { get; set; }
    [DataMember]
    public string ScenarioName { get; set; }
}

interface IVesselSequence
{
    int AllocationId { get; set; }
    string ScenarioName { get; set; }
}

Вы не можете сделать это, к сожалению:

public class VesselSequence : IVesselSequence
{
    public int AllocationId { get; set; }
    public string ScenarioName { get; set; }
}

[DataContract(Namespace = ...........)]
interface IVesselSequence
{
    [DataMember]
    int AllocationId { get; set; }
    [DataMember]
    string ScenarioName { get; set; }
}

Ответ 2

уверен, что это возможно, но имейте в виду, если вы возвращаете тип интерфейса, вам нужно определить атрибут KnownTypes для механизма десериализации, чтобы он мог десериализовать ваш отправленный интерфейс на другом конце.