BLToolkit: общедоступные свойства только для чтения - PullRequest
1 голос
/ 09 марта 2012

Предположим, у меня есть бизнес-объект, который имеет некоторые свойства, которые должны быть только для чтения. Например:

public class Order
{
     ...
     public DateTime OrderDate { get; set; }
     ...
     public decimal OrderTotal { get; set; }
}

Также предположим, что OrderTotal - это вычисленное значение, возвращаемое хранимым процессом, которое не может быть установлено приложением (тогда как OrderDate может). Обычно я просто написал бы OrderTotal без публичного сеттера:

public decimal OrderTotal { get; private set; }

Однако, если я это сделаю, BLToolkit больше не будет устанавливать значение этого свойства. Я также уже пытался написать это как внутреннее свойство и определив BLToolkit как сборку друга (InternalsVisibleTo("BLToolkit.4, PublicKey=xyz")) безуспешно.

Как я могу написать свойство без открытого сеттера, которое все еще может быть заполнено BLToolkit?

Ответы [ 2 ]

4 голосов
/ 12 марта 2012

В атрибуте MapField есть свойство Storage, возможно, это поможет

    public class Class1
    {
        int _int32 = 0;
        [MapField(Storage = "_int32")]
        public int Int32
        {
            get { return _int32; }
        }
    }
0 голосов
/ 10 марта 2012

Не думаю, что вы можете это сделать, но если я вас правильно понимаю, вам это не нужно. Если OrderTotal возвращается из хранимой процедуры, то это нормально, если оставить все как есть. Если класс Order не представляет фактическую таблицу Order в базе данных, у вас не возникнет никаких проблем, если вы случайно обновите OrderTotal.

...