Как расширить абстрактный класс Entity в RIA Services - PullRequest
1 голос
/ 24 декабря 2010

Я хочу добавить переменную и свойство bool к базовому классу Entity в моем проекте служб RIA, чтобы он был доступен для всех объектов Entity, но, похоже, не смог понять, как это сделать. Я знаю, что добавлять свойства к самим сущностям очень легко, используя .shared.cs и частичные классы, но добавление таких свойств в класс Entity с использованием аналогичных методов не работает.

Например, следующий код не работает

namespace System.ServiceModel.DomainServices.Client
{
    public abstract partial class Entity
    {
        private bool auditRequired;
        public bool AuditRequired
        {
            get { return auditRequired; }
            set { auditRequired = value; }
        }
    }
}

Все, что происходит, - это то, что существующий класс Entity полностью переопределяется, а не расширяет класс Entity.

Как расширить базовый класс сущностей, чтобы функциональность была доступна для всех производных классов сущностей?

1 Ответ

2 голосов
/ 24 декабря 2010

Вы не сможете добавить свойство в класс Entity. Этот класс уже скомпилирован и не может быть изменен (частичные классы работают только потому, что у вас есть исходный код класса в вашем решении, и код можно объединить во время компиляции).

Одним из вариантов может быть создание класса, который наследуется от Entity, затем добавление вашего свойства в этот класс, и ваши объекты наследуются от вашего пользовательского класса вместо Entity. Это может быть непрактично для использования с дизайнерами.

public class MyEntityBase : Entity
{
    private bool auditRequired;
    public bool AuditRequired
    {
        get { return auditRequired; }
        set { auditRequired = value; }
    }
}

public class Entity1 : MyEntityBase
{

}
...