Мне нужно, чтобы некоторые члены данных получили некоторые значения, когда я создаю экземпляр DataContract на клиенте. Этого не происходит с помощью конструкторов. Я просматривал различные форумы и обнаружил, что мы должны использовать атрибуты [OnDeserializing] и [OnDeserialized]. Это также не работает. Может кто-нибудь что-то предложить здесь. Другой альтернативой является создание конструкторов в частичных классах на стороне клиента. Я хочу этого избежать.Конструктор в WCF DataContract не отражается на клиенте
Вы можете найти код ниже:
стороны сервера: DataContract
[DataContract]
public class Account
{
private int mAccountId;
private string mAccountName;
public Account()
{
mAccountId = 5;
mAccountName = "ABC";
}
[OnDeserializing]
public void OnDeserializing(StreamingContext context)
{
mAccountId = 5;
mAccountName = "ABC";
}
[OnDeserialized]
public void OnDeserialized(StreamingContext context)
{
}
[DataMember]
public int AccountId
{
get
{
return mAccountId;
}
set
{
mAccountId = value;
}
}
[DataMember]
public string AccountName
{
get
{
return mAccountName;
}
set
{
mAccountName = value;
}
}
}
стороны клиента - инициализация
namespace TestClient
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Account acc = new Account();
}
}
}
Соединение клиент-сервер WCF будет ** ** ** зеркально отражать аспекты данных ваших контрактов данных - ** не ** любой код, который может быть у вас в классах данных. В конце концов: только данные могут быть сериализованы в формат, представленный XSD (XML-схемой) и отправленный по проводу - без кода. –