2013-06-24 165 views
0

接口我有一個接口,稱爲IDeviceConfig如下:序列化WCF

[KnownType(typeof(Device))] 
[KnownType(typeof(DeviceGroup))] 
[DataContract()] 
public interface IDeviceConfig 
{ 
    [DataMember()] 
    string Name { get; set; } 

    [DataMember()] 
    List<Property> Properties { get; set; } 

    ActionResult PerformAction(string ActionId); 
} 

界面將通過兩個類來實現,具體如下:

public class Device : IDeviceConfig 
{ 
... 
} 

public class DeviceGroup : IDeviceConfig 
{ 
... 
} 

在我的WCF服務,我需要返回一個IDeviceConfigs列表;當我用KnownType裝飾界面時,Visual Studio抱怨說屬性'KnownType'在這種聲明類型上是無效的。

有人可以請解釋如何返回IDeviceconfigs的列表?

+0

是'Device'和'DeviceGroup'服務或數據的合同?看起來你正在混合一些東西。 – Tim

+0

設備和設備組是數據合同。 –

回答

2

如果您查看KnownTypeAttribute的定義,則不能應用於接口。

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct, Inherited = true, AllowMultiple = true)] 
public sealed class KnownTypeAttribute : Attribute 

「已知類型只能與類和結構關聯,而不能與接口關聯」。從這裏: http://msdn.microsoft.com/en-us/library/ms730167.aspx