0

我想验证通过 Telerik OpenAccess Mapper 生成的属性(IDataErrorInfo)。

像这样。

public partial class Etage
{
    private long _version;
    public virtual long Version 
    { 
        get
        {
            return this._version;
        }
        set
        {
            this._version = value;
        }
    }...

现在我想像这样在我的第二类 Etage(也是部分)中覆盖属性“版本”。

public partial class Etage : IComparable
{

    public override long Version
    {
        get { return _version; }
        set { _version = value+200; }
    }

    // Some Validation in the Setter later...
    public override string ToString()
    {
        return String.Format("{0}", Version);
    }
}

然后我得到以下错误:

“Inventar.Model.Etage.Version”和“Inventar.Model.Etage.Version”之间的歧义

4

3 回答 3

1

没有办法覆盖部分类中的属性,您需要在派生类中进行。但是,使用派生类可能无济于事,因为 OpenAccess 上下文将从基类中检索实例,并且没有一种简单的方法可以将这些实例转换为新类型。

您可以做的是添加一个具有不同名称的属性(在部分类中),它会进行必要的计算。但是,这意味着您将同时暴露在模型上。为了解决这个问题,您可以通过可视化设计器更改生成属性的访问修饰符。只需找到该属性并将其在属性窗格中的访问修饰符更改为与公共不同的内容。

于 2012-06-27T11:33:55.233 回答
0

您可以通过修改其使用的TT 模板来控制 OpenAccess 代码生成器如何创建其代码。以下是一些可以让您走上正轨的链接:

于 2012-11-10T08:25:29.513 回答
0

这可能有效:

public partial class SubEtage : Etage
{

    public override string Beschreibung
    {
        get { return base.Beschreibung; }
        set { base.Beschreibung = value + "GEHT"; }
    }

    public override string ToString()
    {
        return String.Format("{0}", Beschreibung);
    }
}

并查看链接:

http://www.telerik.com/help/openaccess-orm/openaccess-tasks-howto-single-class-single-table.html

于 2012-06-22T21:50:19.183 回答