从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}®Status={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;
}
答案 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(数据传输对象)类。您需要代码来复制相关属性,至少是服务器端。