假设我有一个业务对象,它有一些属性为只读。例如:
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填充的公共setter,我如何编写属性?
MapField属性上有一个存储属性,这可能有助于
public class Class1
{
int _int32 = 0;
[MapField(Storage = "_int32")]
public int Int32
{
get { return _int32; }
}
}
我不认为你能做到这一点,但如果我理解正确,你就不需要它。如果OrderTotal是从存储过程返回的,那么保持原样也没关系。除非Order类代表数据库中的实际Order表,否则如果你不小心更新了OrderTotal,你不会有任何问题。