неопознанный синтаксис в конструкторе объекта домена

Может ли кто-нибудь помочь мне определить, какова цель этого неопознанного синтаксиса. Это дополнительный элемент в конструкторе для этого объекта. Я пытаюсь понять, что такое «<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; }
        }
10.12.2008 17:46:52
4 ОТВЕТА
РЕШЕНИЕ

Читайте о Generics: MSDN

Вот как вы определяете универсальный класс. Отсюда зовет

new DomainObject<string>(); 

создаст объект домена с идентификатором типа строки.

Способ определения идентификатора должен быть int.

Как это определено, идентификатор может быть любого типа, который вы хотите.

2
10.12.2008 18:02:05

Из спецификации C #:

Тип класса, который объявлен для принятия параметров типа, называется универсальным типом класса. Типы структуры, интерфейса и делегата также могут быть общими. Когда используется универсальный класс, аргументы типа должны быть предоставлены для каждого из параметров типа

1
10.12.2008 17:57:36

Да, я в некоторой степени осведомлен о том, что такое дженерики, использовал списки, делегаты и т. д. Я не понимаю, я думаю, какой эффект дает «<dataType>» после объявления класса, и почему вы это сделаете. Если бы я объявил этот объект, я бы сделал следующее:

Открытый класс DomainObject {Public DomainObject (int ID) {this.ID = ID; } ....

0
10.12.2008 17:58:54
В этом случае идентификатор должен быть целым числом, универсальные шаблоны обеспечивают большую гибкость.
Jim Anderson 10.12.2008 18:21:26

В этом случае он позволяет свойству ID принимать различные значения, не определяя класс для каждого типа свойства ID. Например, ID может быть int, или long, или в Guidзависимости от базового типа данных в базе данных.

1
10.12.2008 18:03:38