如何定义只读持久属性

时间:2018-04-18 10:49:23

标签: frameworks devexpress

根据我的应用程序的业务逻辑,持久对象的特定属性必须是只读的。它的值应该在创建对象时设置,然后永远不会更改。但是,此属性也必须是持久的。如何在XPO类中定义只读持久属性?

2 个答案:

答案 0 :(得分:2)

您应该在类中创建一个没有“setter”方法的属性(如果您在VB.NET中编码,请将ReadOnly关键字放在属性的定义中)。默认情况下,此类属性是非持久性的。为了能够在筛选条件中使用此属性,通过它搜索或将其包含在XPCollection.DisplayableProperties中,必须使用PersistentAlias属性标记该属性。

实际值可以存储在私有字段中。私有字段也是XPObject的非持久成员。您应该将Persistent属性添加到具有只读属性名称的字段中。此名称将用于与您的对象对应的数据库表中的列名称。

只读属性的值可以作为参数传递给对象的构造函数。因此,只能为新对象指定值,之后不能更改。

答案 1 :(得分:1)

public class Client : XPObject {
    [Persistent("ClientID")]
    private string clientID;

    [PersistentAlias("clientID")]
    public string ClientID {
        get { return clientID; }
    }

    public Client(string clientID) {
        this.clientID = clientID;
    }

    public Client(Session session) : base(session) {}
}

注意您可以将对象的属性设置为“只读”,仅用于绑定视觉控制,例如文本编辑。您只需使用ReadOnly属性

装饰您的属性或公共字段