文章出處
文章列表
有如下業務對象定義:
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); } } } }
文章列表
全站熱搜