diff --git a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/Admin/RoleEdit.cs b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/Admin/RoleEdit.cs index 546462efc2..f70bbc6d6e 100644 --- a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/Admin/RoleEdit.cs +++ b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/Admin/RoleEdit.cs @@ -7,7 +7,7 @@ namespace ProjectTracker.Library.Admin { [CslaImplementProperties] - public partial class RoleEdit : BusinessBase + public partial class RoleEdit : CslaBaseTypes.BusinessBase { public RoleEdit() { @@ -19,10 +19,6 @@ public RoleEdit() [Required] public partial string Name { get; set; } - [Browsable(false)] - [EditorBrowsable(EditorBrowsableState.Never)] - public partial byte[] TimeStamp { get; set; } - protected override void AddBusinessRules() { base.AddBusinessRules(); diff --git a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/CslaBaseTypes/BusinessBase.cs b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/CslaBaseTypes/BusinessBase.cs index f2d656da1d..74e1a9ec1e 100644 --- a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/CslaBaseTypes/BusinessBase.cs +++ b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/CslaBaseTypes/BusinessBase.cs @@ -1,10 +1,23 @@ -using System; +using System; +using System.ComponentModel; +using Csla; namespace ProjectTracker.Library.CslaBaseTypes { [Serializable] public abstract class BusinessBase : Csla.BusinessBase where T : Csla.BusinessBase { + public static readonly PropertyInfo TimeStampProperty = + RegisterProperty(nameof(TimeStamp)); + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] +#pragma warning disable CSLA0007 // null-forgiving on GetProperty matches framework convention for non-nullable managed properties + public byte[] TimeStamp + { + get => GetProperty(TimeStampProperty)!; + set => SetProperty(TimeStampProperty, value); + } +#pragma warning restore CSLA0007 } } diff --git a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/CslaBaseTypes/BusinessDocumentBase.cs b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/CslaBaseTypes/BusinessDocumentBase.cs index 33bf2b9e7f..82a9227a11 100644 --- a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/CslaBaseTypes/BusinessDocumentBase.cs +++ b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/CslaBaseTypes/BusinessDocumentBase.cs @@ -1,4 +1,6 @@ using System; +using System.ComponentModel; +using Csla; namespace ProjectTracker.Library.CslaBaseTypes { @@ -7,6 +9,17 @@ public abstract class BusinessDocumentBase : Csla.BusinessDocumentBase where C : notnull, Csla.Core.IEditableBusinessObject { + public static readonly PropertyInfo TimeStampProperty = + RegisterProperty(nameof(TimeStamp)); + [Browsable(false)] + [EditorBrowsable(EditorBrowsableState.Never)] +#pragma warning disable CSLA0007 // null-forgiving on GetProperty matches framework convention for non-nullable managed properties + public byte[] TimeStamp + { + get => GetProperty(TimeStampProperty)!; + set => SetProperty(TimeStampProperty, value); + } +#pragma warning restore CSLA0007 } } diff --git a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ProjectEdit.cs b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ProjectEdit.cs index 182353234d..8dd7ae808a 100644 --- a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ProjectEdit.cs +++ b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ProjectEdit.cs @@ -10,10 +10,6 @@ namespace ProjectTracker.Library [CslaImplementProperties] public partial class ProjectEdit : CslaBaseTypes.BusinessDocumentBase { - [Browsable(false)] - [EditorBrowsable(EditorBrowsableState.Never)] - public partial byte[] TimeStamp { get; private set; } - [Display(Name = "Project id")] public partial int Id { get; private set; } diff --git a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ProjectResourceEdit.cs b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ProjectResourceEdit.cs index d8a566dd66..b3dcabc48d 100644 --- a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ProjectResourceEdit.cs +++ b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ProjectResourceEdit.cs @@ -9,12 +9,8 @@ namespace ProjectTracker.Library { [CslaImplementProperties] - public partial class ProjectResourceEdit : BusinessBase + public partial class ProjectResourceEdit : CslaBaseTypes.BusinessBase { - [Browsable(false)] - [EditorBrowsable(EditorBrowsableState.Never)] - public partial byte[] TimeStamp { get; set; } - [Display(Name = "Resource id")] public partial int ResourceId { get; private set; } diff --git a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ResourceAssignmentEdit.cs b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ResourceAssignmentEdit.cs index d08fafd5d5..4f6fbfaa1f 100644 --- a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ResourceAssignmentEdit.cs +++ b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ResourceAssignmentEdit.cs @@ -7,12 +7,8 @@ namespace ProjectTracker.Library { [CslaImplementProperties] - public partial class ResourceAssignmentEdit : BusinessBase + public partial class ResourceAssignmentEdit : CslaBaseTypes.BusinessBase { - [Browsable(false)] - [EditorBrowsable(EditorBrowsableState.Never)] - public partial byte[] TimeStamp { get; set; } - [Display(Name = "Project id")] public partial int ProjectId { get; private set; } diff --git a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ResourceEdit.cs b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ResourceEdit.cs index cd1d928e2a..914d501288 100644 --- a/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ResourceEdit.cs +++ b/Samples/ProjectTracker/ProjectTracker.BusinessLibrary/ResourceEdit.cs @@ -10,10 +10,6 @@ namespace ProjectTracker.Library [CslaImplementProperties] public partial class ResourceEdit : CslaBaseTypes.BusinessDocumentBase { - [Browsable(false)] - [EditorBrowsable(EditorBrowsableState.Never)] - public partial byte[] TimeStamp { get; set; } - [Display(Name = "Resource id")] public partial int Id { get; set; }