2009-07-07 3 views
10

Новое в WCF.WCF DataContract vs DataContract Interface

Может ли класс 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; } 
} 

ответ

3

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

+1

Привет Мартин .. есть какие-нибудь хорошие примеры на веб-где? – Sreedhar

5

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

[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; } 
}