为什么在代码'IResult <h>'</h>

时间:2013-11-25 07:58:41

标签: c# generics interface

在学习一个程序时我遇到了这个代码。在'&lt;&gt;

里面的H是什么
public interface IResult<H>
    {
        bool IsSuccess { get; set; }
        string Message { get; set; }
        H Data { get; set; }
    }
public interface Employee {
    int ID { get; set; }
    string Sex { get; set; }
    string Name { get; set; }

     IResult Save();
}

如果有人可以解释Iresult和H Data属性

,那将非常有帮助

2 个答案:

答案 0 :(得分:4)

它是Generic Type,意味着您可以替换其中的任何类型并具有类型安全类。例如:

// it's an interface, you can't actually do this (of course).  If it was a 
// normal class, then no problem.  This is just for demonstration
IResult<string> x = new IResult<string>();
x.Data = "My String";

它可能与用户定义的类一起使用,例如来自数据库的东西,就像这样(只是猜测,看不到其他代码):

var result = myEmployeeRecord.Save();  // result is of type IResult<Employee>

if (result.IsSuccess) { 
    Display(result.Message);
} else {
    Display("Error: " + result.Data.Name + " could not be saved");
    // result.Data is of type "Employee"
}

答案 1 :(得分:1)

IResult<H>generic interface,它允许您在编译类型中传入一个类型,其中H是类型。您可以像这样使用它:

IResult<Employee> Save();

这意味着类型将为Emloyee。如您所见,界面包含一个属性:

H Data { get; set; }

H将成为您在上面指定的类型,因此在这种情况下为Employee