我想验证(IDataErrorInfo)我的属性,它是通过Telerik OpenAccess映射器生成的。
就像这样。
public partial class Etage
{
private long _version;
public virtual long Version
{
get
{
return this._version;
}
set
{
this._version = value;
}
}...现在我想要覆盖我的第二个类Etage (也是partial)中的"Version“属性,如下所示。
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”之间的歧义
发布于 2012-06-27 19:33:55
没有一种方法可以覆盖分部类中的属性,您需要在派生类中重写属性。但是,使用派生类可能没有帮助,因为OpenAccess上下文将从基类检索实例,并且没有一种简单的方法将这些实例转换为您的新类型。
您可以做的是添加一个具有不同名称的属性(在分部类中),它执行必要的计算。然而,这将意味着您将在模型上公开这两个对象。为了解决这个问题,您可以通过可视化设计器更改生成的属性的访问修饰符。只需找到该属性,并在属性窗格中将其访问修饰符更改为不同于public的属性即可。
发布于 2012-06-23 05:50:19
这可能会起作用:
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-11-10 16:25:30
您可以通过修改OpenAccess代码生成器使用的TT templates来控制它创建代码的方式。以下是一些可以让你走上正轨的链接:
在概念上,这与实现IDataErrorInfo.所需执行的操作相同,即
INotifyPropertyChanging/ed Interface (C#)
INotifyPropertyChanging/ed Interface (VB.NET)https://stackoverflow.com/questions/11164418
复制相似问题