Mercurial > pub > bltoolkit
view Source/Common/EntityBase.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
line wrap: on
line source
using System; using System.Collections; using System.ComponentModel; using System.Runtime.InteropServices; using BLToolkit.ComponentModel; using BLToolkit.Mapping; using BLToolkit.Validation; namespace BLToolkit.Common { [Serializable, Trimmable, ComVisible(true), JetBrains.Annotations.UsedImplicitly] public abstract class EntityBase : ICustomTypeDescriptor { #region Protected members protected virtual ICustomTypeDescriptor CreateTypeDescriptor() { return new CustomTypeDescriptorImpl(GetType()); } #endregion #region ICustomTypeDescriptor Members private static readonly Hashtable _hashDescriptors = new Hashtable(); [NonSerialized] private ICustomTypeDescriptor _typeDescriptor; private ICustomTypeDescriptor TypeDescriptor { get { if (_typeDescriptor == null) { Type key = GetType(); _typeDescriptor = (ICustomTypeDescriptor)_hashDescriptors[key]; if (_typeDescriptor == null) _hashDescriptors[key] = _typeDescriptor = CreateTypeDescriptor(); } return _typeDescriptor; } } AttributeCollection ICustomTypeDescriptor.GetAttributes() { return TypeDescriptor.GetAttributes(); } string ICustomTypeDescriptor.GetClassName() { return TypeDescriptor.GetClassName(); } string ICustomTypeDescriptor.GetComponentName() { return TypeDescriptor.GetComponentName(); } TypeConverter ICustomTypeDescriptor.GetConverter() { return TypeDescriptor.GetConverter(); } EventDescriptor ICustomTypeDescriptor.GetDefaultEvent() { return TypeDescriptor.GetDefaultEvent(); } PropertyDescriptor ICustomTypeDescriptor.GetDefaultProperty() { return TypeDescriptor.GetDefaultProperty(); } object ICustomTypeDescriptor.GetEditor(Type editorBaseType) { return TypeDescriptor.GetEditor(editorBaseType); } EventDescriptorCollection ICustomTypeDescriptor.GetEvents(Attribute[] attributes) { return TypeDescriptor.GetEvents(attributes); } EventDescriptorCollection ICustomTypeDescriptor.GetEvents() { return TypeDescriptor.GetEvents(); } PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties(Attribute[] attributes) { return TypeDescriptor.GetProperties(attributes); } PropertyDescriptorCollection ICustomTypeDescriptor.GetProperties() { return TypeDescriptor.GetProperties(); } object ICustomTypeDescriptor.GetPropertyOwner(PropertyDescriptor pd) { // Do not relay this call to TypeDescriptor. We are the owner. // return this; } #endregion #region Validation public virtual void Validate() { Validator.Validate(this); } public virtual bool IsValid(string fieldName) { return Validator.IsValid(this, fieldName); } public virtual string[] GetErrorMessages(string fieldName) { return Validator.GetErrorMessages(this, fieldName); } #endregion } }