1

假设我有一个业务对象,它有一些属性应该是只读的。例如:

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 填充的属性?

4

2 回答 2

4

MapField 属性上有一个存储属性,也许这会有所帮助

    public class Class1
    {
        int _int32 = 0;
        [MapField(Storage = "_int32")]
        public int Int32
        {
            get { return _int32; }
        }
    }
于 2012-03-12T11:43:35.973 回答
0

我不认为你能做到这一点,但如果我理解正确你就不需要它。如果 OrderTotal 是从存储过程返回的,那么保持原样就好了。除非 Order 类代表数据库中的实际 Order 表,否则如果您不小心更新了 OrderTotal,则不会有任何问题。

于 2012-03-10T10:50:32.870 回答