РИА: как получить функциональность, а не данные - PullRequest
1 голос
/ 29 марта 2010

На стороне сервера у меня есть следующий класс:

public class Customer
{
    [Key]
    public int Id { get; set; }

    public string FirstName { get; set; }

    public string SecondName { get; set; }

    public string FullName { get { return string.Concat(FirstName, " ", SecondName); } }
}

Проблема в том, что каждое поле вычисляется и передается клиенту (в приложение Silvelight), например, свойство 'FullName':

    [DataMember()]
    [Editable(false)]
    [ReadOnly(true)]
    public string FullName
    {
        get
        {
            return this._fullName;
        }
        set
        {
            if ((this._fullName != value))
            {
                this.ValidateProperty("FullName", value);
                this.OnFullNameChanging(value);
                this._fullName = value;
                this.RaisePropertyChanged("FullName");
                this.OnFullNameChanged();
            }
        }
    }

Вместо передачи данных (что потребляет трафик, в некоторых случаях это приводит к значительным накладным расходам). Я хотел бы иметь расчет на стороне клиента (приложение Silverlight).

Возможно ли это без ручного дублирования реализации свойства?

Спасибо.

1 Ответ

0 голосов
/ 18 февраля 2011

Переместите вычисленные свойства в другой файл как частичный класс и используйте «Shared» конвенцию именования (MyFileName.Shared.cs). Пример:

//Employee.cs
public partial class Employee
{
   [Key]
    public string EmployeeId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

//Employee.Shared.cs
public partial class Employee
{
    public string LastNameFirst
    {
      get { return string.Format("{0}, {1}", LastName, FirstName); }
    }
}

Код в общем файле будет отображаться на стороне клиента.

...