有如下业务对象定义:

using System;
using System.Linq;
using System.Text;
using DevExpress.Xpo;
using DevExpress.ExpressApp;
using System.ComponentModel;
using DevExpress.ExpressApp.DC;
using DevExpress.Data.Filtering;
using DevExpress.Persistent.Base;
using System.Collections.Generic;
using DevExpress.ExpressApp.Model;
using DevExpress.Persistent.BaseImpl;
using DevExpress.Persistent.Validation; namespace TestXPO.Module.BusinessObjects
{
  //往来单位:供应商,客户都是此类的派生类
[XafDefaultProperty("Name")]
[DefaultClassOptions]
public abstract class CompanyUnit : BaseObject
{
public CompanyUnit(Session s) : base(s)
{ }
public string Name
{
get { return GetPropertyValue<string>(nameof(Name)); }
set { SetPropertyValue(nameof(Name), value); }
}
} [DefaultClassOptions]
[XafDefaultProperty(nameof(Address))]
public class Customer : CompanyUnit
{
public Customer(Session s) : base(s)
{ }
public string Address
{
get { return GetPropertyValue<string>(nameof(Address)); }
set { SetPropertyValue(nameof(Address), value); }
}
} [DefaultClassOptions]
public class Provider : CompanyUnit
{
public Provider(Session s) : base(s)
{ } } public class Dept : CompanyUnit
{
public Dept(Session s) : base(s)
{ }
}

  //存在某种单据基类:
  //使用了CompanyUnit做为属性的类型
  //在派生类中new TargetUnit重新定义此属性的类型,则可以成功
  //可以达到使用真实类型过滤的作用.
  //但如果使用Guid类型声明,并且派生类中用复杂类型,则不能成功
[DefaultClassOptions]
public class FormBase : BaseObject
{
public FormBase(Session session)
: base(session)
{
} public CompanyUnit TargetUnit
{
get { return GetPropertyValue<CompanyUnit>(nameof(TargetUnit)); }
set { SetPropertyValue(nameof(TargetUnit), value); }
}
} [DefaultClassOptions]
public class PMSOrder : FormBase
{
public PMSOrder(Session s) : base(s)
{ }
public new Provider TargetUnit
{
get { return GetPropertyValue<Provider>(nameof(TargetUnit)); }
set { SetPropertyValue(nameof(TargetUnit), value); }
}
} [DefaultClassOptions]
public class SMSOrder : FormBase
{
public SMSOrder(Session s) : base(s)
{ }
public new Customer TargetUnit
{
get { return GetPropertyValue<Customer>(nameof(TargetUnit)); }
set { SetPropertyValue(nameof(TargetUnit), value); }
}
}
}

xaf.domain object new 在属性上的用法的更多相关文章

  1. paip.提升效率---request自动绑定domain object

    paip.提升效率---request自动绑定domain object #.keyword,subtitle关键字,子标题 ------------------------- 复制request属性 ...

  2. TextBox 绑定到DataTable某一列属性上

    将TextBox绑定到DataTable某一列属性上 DataTable dt = GetDataTable() textBox1.DataBindings.Add("Text", ...

  3. JavaScript之Object对象常用属性与方法手册

    MDN Object参考地址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Obje ...

  4. 为什么Object.prototype在Function的原型链上与Function.prototype在Object的原型链上都为true

    关于javascript的原型链有一个问题我一直很疑惑:为什么 Function instanceof Object 与 Object instanceof Function都为true呢? Func ...

  5. 外部配置属性值是如何被绑定到XxxProperties类属性上的?--SpringBoot源码(五)

    注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 SpringBoot是如何实现自动配置的?--SpringBoot源码(四) 温故而知新,我们来简单回顾一下上 ...

  6. vue2.x版本中Object.defineProperty对象属性监听和关联

    前言 在vue2.x版本官方文档中 深入响应式原理 https://cn.vuejs.org/v2/guide/reactivity.html一文的解释当中,Object.defineProperty ...

  7. 读匿名object对象的属性值

    读匿名object对象的属性值 1.定义读object对象值的功能方法 public static class StaticClass { public static string ValueByKe ...

  8. JS构造函数内的方法与构造函数prototype属性上方法的对比

    本文的目的是让大家理解什么情况下把函数的方法写在JavaScript的构造函数上,什么时候把方法写在函数的 prototype 属性上;以及这样做的好处. 为了阅读方便,我们约定一下:把方法写在构造函 ...

  9. 【阿里云IoT+YF3300】3. Alink物模型之属性上传和下发

    [名词解释]属性:设备的功能模型之一,一般用于描述设备运行时的状态,如环境监测设备所读取的当前环境温度等.属性支持 GET 和 SET 请求方式.应用系统可发起对属性的读取和设置请求. 在上一篇文章& ...

随机推荐

  1. windows server 2016 无法联网问题

    首先,联网分解为两个问题,一.WLAN(无线网).二.以太网(有线网) 一 .WLAN问题解决方案 1.打开服务器管理器 2.添加角色和功能 3.一直点下一步到“功能”,勾选 DirectPlay 和 ...

  2. 自制年月选择插件 jquery.MyDatePicker v1.0beta

    参数: el: null, //默认值和位置从哪个文本框取,传入jquery对象 ,默认为this 用于按钮引发文本框的focus事件来弹出 viewtype: 'month', //日期控件模式 默 ...

  3. fun() 的 拆分和 for 遍历 的结合---------> 函数容器

    fun() 的 拆分和 for 遍历 的结合--------->  函数容器

  4. return 返回值的问题

    def yue(): print("1. 打开手机") print("2. 打开陌陌") print("3. 找个漂亮的小姐姐") prin ...

  5. npm install --save 和 --save-dev的区别

    --save 会把依赖包名称添加到 package.json 文件 "dependencies" 键下--save-dev 则添加到 package.json 文件 "d ...

  6. JavaScript的DOM操作获取元素实际大小

    clientWidth 和 clientHeight 这组属性可以获取元素可视区的大小,可以得到元素内容及内边距所占据的空间大小. 返回了元素大小,但没有单位,默认单位是 px,如果你强行设置了单位, ...

  7. uva 12508 - Triangles in the Grid(几何+计数)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u011328934/article/details/35244875 题目链接:uva 12508 ...

  8. linux 字体 设置 en_US.UTF-8

    设置:localectl    set-local    LANG=en_US.UTF-8 查看: localectl list-locales

  9. (第二章)改善JavaScript,编写高质量代码。

    建议34:字符串是非值操作 var a = "javascript"; var b = a; b = b.toUpperCase(); alert(a); //javascript ...

  10. 程序集(Assembly)和模块(Managed Module)

    前言 一直都用集成开发坏境(IDE),一直对模块和程序集的概念理解的不是很直观,因为一Build就把你的单个模块塞进程序集里面去了.当然,对你的编程也不会造成太大的影响.但有些东西你最好还是知道比较好 ...