Может ли кто-нибудь помочь мне определить, какова цель этого неопознанного синтаксиса. Это дополнительный элемент в конструкторе для этого объекта. Я пытаюсь понять, что такое «<IdT>» в конце строки объявления класса? Я думаю, что это то, что я нашел бы полезным, мне просто нужно понять, почему так много людей, кажется, делают это.
using BasicSample.Core.Utils;
namespace BasicSample.Core.Domain
{
/// <summary>
/// For a discussion of this object, see
/// http://devlicio.us/blogs/billy_mccafferty/archive/2007/04/25/using-equals-gethashcode-effectively.aspx
/// </summary>
public abstract class DomainObject<IdT>
{
/// <summary>
/// ID may be of type string, int, custom type, etc.
/// Setter is protected to allow unit tests to set this property via reflection and to allow
/// domain objects more flexibility in setting this for those objects with assigned IDs.
/// </summary>
public IdT ID {
get { return id; }
protected set { id = value; }
}
Читайте о Generics: MSDN
Вот как вы определяете универсальный класс. Отсюда зовет
new DomainObject<string>();
создаст объект домена с идентификатором типа строки.
Способ определения идентификатора должен быть int.
Как это определено, идентификатор может быть любого типа, который вы хотите.
Из спецификации C #:
Тип класса, который объявлен для принятия параметров типа, называется универсальным типом класса. Типы структуры, интерфейса и делегата также могут быть общими. Когда используется универсальный класс, аргументы типа должны быть предоставлены для каждого из параметров типа
Да, я в некоторой степени осведомлен о том, что такое дженерики, использовал списки, делегаты и т. д. Я не понимаю, я думаю, какой эффект дает «<dataType>» после объявления класса, и почему вы это сделаете. Если бы я объявил этот объект, я бы сделал следующее:
Открытый класс DomainObject {Public DomainObject (int ID) {this.ID = ID; } ....
В этом случае он позволяет свойству ID принимать различные значения, не определяя класс для каждого типа свойства ID. Например, ID может быть int
, или long
, или в Guid
зависимости от базового типа данных в базе данных.