是否可以使用库中的类型使用DataContract?

时间:2015-08-21 13:49:51

标签: c# .net wcf

我正在设置WCF界面。我的数据合同如下:

[DataContract(Namespace = "wcf")]
[KnownType(typeof(TypeFromLibrary))]
public class MyClass
{
    [DataMember]
    public TypeFromLibrary myProp { get; set; }
}

是否可以像这样在DataContract中使用TypeFromLibrary?我见过的所有例子都只使用int,string,double等作为属性类型。

注意:我在WCF的服务器端和客户端都有库的副本。

1 个答案:

答案 0 :(得分:0)

我只是想发布对我有用的东西以防其他人遇到麻烦。

[DataContract(Namespace = "wcf", IsReference = true)]
public class NewType : TypeFromLibrary
{
    public NewType(TypeFromLibrary baseObj)
    {
        //set all props here
    }

    public event EventHandler<SomeEventArgs> SomeEvent;

    [OperationContract]
    public string SomeBaseFunction()
    {
    }

    [DataMember]
    public CustomBaseProp SomeProp { get; set; }

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

只要SomeProp为空,这就有效。只要给SomeProp一个值,就会出现相同的错误。我进入了一个新的水平并装饰了CustomBaseProp,这也很有效。但是,我停在那里因为CustomBaseProp中有更多的自定义类,并希望寻求其他解决方案。要修复完全修复它,您必须使用适当的属性修饰CustomBaseProp类和其他自定义类。