C# Класс Framework.Core.DomainModel.BaseObject

Provides a standard base class for facilitating comparison of objects.
For a discussion of the implementation of Equals/GetHashCode, see http://devlicio.us/blogs/billy_mccafferty/archive/2007/04/25/using-equals-gethashcode-effectively.aspx and http://groups.google.com/group/sharp-architecture/browse_thread/thread/f76d1678e68e3ece?hl=en for an in depth and conclusive resolution.
Показать файл Открыть проект Примеры использования класса

Открытые свойства

Свойство Тип Описание
HashMultiplier int

Открытые методы

Метод Описание
Equals ( Object obj ) : bool

Determines whether the specified System.Object is equal to this instance.

GetHashCode ( ) : int

Returns a hash code for this instance.

This is used to provide the hashcode identifier of an object using the signature properties of the object; although it's necessary for NHibernate's use, this can also be useful for business logic purposes and has been included in this base class, accordingly. Since it is recommended that GetHashCode change infrequently, if at all, in an object's lifetime, it's important that properties are carefully selected which truly represent the signature of an object.

GetSignatureProperties ( ) : IEnumerable

Gets the signature properties.

Static dictionary used to reduce performance. So properties will be retrieved only once per class for each thread after application start.

HasSameObjectSignatureAs ( BaseObject compareTo ) : bool

You may override this method to provide your own comparison routine.

Защищенные методы

Метод Описание
GetInnerType ( ) : Type

When NHibernate proxies objects, it masks the type of the actual entity object. This wrapper burrows into the proxied object to get its actual type. Although this assumes NHibernate is being used, it doesn't require any NHibernate related dependencies and has no bad side effects if NHibernate isn't being used.

Related discussion is at http://groups.google.com/group/sharp-architecture/browse_thread/thread/ddd05f9baede023a .

GetTypeSpecificSignatureProperties ( ) : IEnumerable

Enforces the template method pattern to have child objects determine which specific properties should and should not be included in the object signature comparison.

BaseObject already takes care of performance caching, so this method shouldn't worry about caching, just return set of properties.

Описание методов

Equals() публичный Метод

Determines whether the specified System.Object is equal to this instance.
public Equals ( Object obj ) : bool
obj Object The to compare with this instance.
Результат bool

GetHashCode() публичный Метод

Returns a hash code for this instance.
This is used to provide the hashcode identifier of an object using the signature properties of the object; although it's necessary for NHibernate's use, this can also be useful for business logic purposes and has been included in this base class, accordingly. Since it is recommended that GetHashCode change infrequently, if at all, in an object's lifetime, it's important that properties are carefully selected which truly represent the signature of an object.
public GetHashCode ( ) : int
Результат int

GetInnerType() защищенный Метод

When NHibernate proxies objects, it masks the type of the actual entity object. This wrapper burrows into the proxied object to get its actual type. Although this assumes NHibernate is being used, it doesn't require any NHibernate related dependencies and has no bad side effects if NHibernate isn't being used.
Related discussion is at http://groups.google.com/group/sharp-architecture/browse_thread/thread/ddd05f9baede023a .
protected GetInnerType ( ) : Type
Результат System.Type

GetSignatureProperties() публичный Метод

Gets the signature properties.

Static dictionary used to reduce performance. So properties will be retrieved only once per class for each thread after application start.
public GetSignatureProperties ( ) : IEnumerable
Результат IEnumerable

GetTypeSpecificSignatureProperties() защищенный абстрактный Метод

Enforces the template method pattern to have child objects determine which specific properties should and should not be included in the object signature comparison.
BaseObject already takes care of performance caching, so this method shouldn't worry about caching, just return set of properties.
protected abstract GetTypeSpecificSignatureProperties ( ) : IEnumerable
Результат IEnumerable

HasSameObjectSignatureAs() публичный Метод

You may override this method to provide your own comparison routine.
public HasSameObjectSignatureAs ( BaseObject compareTo ) : bool
compareTo BaseObject The to compare with this instance.
Результат bool

Описание свойств

HashMultiplier публичное статическое свойство

To help ensure hashcode uniqueness, a carefully selected random number multiplier is used within the calculation. Goodrich and Tamassia's Data Structures and Algorithms in Java asserts that 31, 33, 37, 39 and 41 will produce the fewest number of collissions.
See http://computinglife.wordpress.com/2008/11/20/why-do-hash-functions-use-prime-numbers/ for more information.
public static int HashMultiplier
Результат int