域对象构造函数中的未识别语法

时间:2008-12-10 17:46:53

标签: c# design-patterns oop dns

有人可以帮我确定这种不明语法的目的是什么。在这个对象的构造函数中,这是一个额外的小东西。我想弄清楚的是什么是“< 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; }
        }

4 个答案:

答案 0 :(得分:2)

了解泛型:MSDN

这就是你定义泛型类的方法。 因此呼叫

new DomainObject<string>(); 

将创建一个ID类型为Id的域对象。

定义ID的方式必须是int。

定义它的方式可以是你想要的任何类型。

答案 1 :(得分:1)

来自C#规范:

  

声明要采用的类类型   类型参数称为泛型   班级类型。结构,界面和   委托类型也可以是通用的。   使用泛型类时,键入   必须为每一个提供参数   类型参数

答案 2 :(得分:1)

在这种情况下,它允许ID属性采用各种值,而无需为每个ID属性类型定义类。例如,ID可以是intlongGuid,具体取决于数据库中的基础数据类型。

答案 3 :(得分:0)

对,我有点意识到什么是泛型,使用过列表,代表等等。我猜不出是什么,这就是放置“&lt; dataType&gt;”的效果在类声明之后,以及为什么要这样做。如果我要宣布这个对象,我会做以下事情:

公共类DomainObject {      Public DomainObject(int ID)      {          this.ID = ID;      } ....