wcf返回bl对象的公共成员

时间:2012-03-05 15:17:57

标签: c# .net wcf serialization

从wcf服务器返回BL对象 但我只得到所有的私人保护。

如何只返回BL公共属性。

这是某些dll中的BL类我引用wcf服务器

[Serializable()]
public class Account
{
    #region properties

    private int _accountId;
    public int AccountID
    {
        get
        {
            return _accountId;
        }
        set
        {
            _accountId = value;
        }
    }


    private string _title;
   public string Title
    {
        get
        {
           return _title;
        }
        set
        {
            _title= value;
        }
    }


    private string _name;
   public string Name
    {
        get
        {
            return _name;
        }
        set
        {
           _name= value;
        }
    }}

那就是界面中的wcf方法

   [OperationContract]
   [WebGet(UriTemplate = "{Key}/{Client}/Registrations?eventID={eventID}&regStatus={regStatus}")]
    List<Registration> GetRegistrations(string key, string client, int eventID, int regStatus);

制作返回列表的方法:

public List<Registration> GetRegistrations(string key, string client, int eventID, int regStatus)
    {
        if (Validation.ValidateClient(key, client) == false)
            return null;

        List<Registration> regs = Registration.GetRegByColumnandValue(eventID, (Registration.RegStatusFlags)regStatus);
        return regs;
    }

1 个答案:

答案 0 :(得分:0)

WCF不使用[Serializable]属性。

写下这样的BL对象(或DTO):

[DataContract]
public class Account
{  
    private int _accountId;    
    [DataMember]
    public int AccountID
    {
       // get/set
    }

    private string _title;
    [DataMember]    
    public string Title
    {
       // get/set
    }
}

[Serializable]正在破坏类型序列化的方式,它不适合WCF。

如果它嵌入在另一个图层中而您无法将其删除,则创建一个DTO(数据传输对象)类。您需要代码来复制相关属性,至少是服务器端。