2013-11-25 2 views
1

동안 '내부의 H 란이 코드에 붙어있어 프로그램을 .. 학습 <>왜이 코드에서 'IResult <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를 설명 할 수 원하는 경우 데이터 속성

+2

"제네릭"이라고합니다. "C# generics"에 대한 Google. –

+1

이 질문은 문서에서 쉽게 찾을 수있는 프로그래밍 개념이기 때문에 주제가 아닌 것으로 보입니다. – rene

답변

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

IResult<H>generic interface이고 컴파일 유형에서 유형을 전달할 수 있습니다. H이 유형입니다. 이처럼 사용할 수 있습니다

IResult<Employee> Save(); 

이는 유형이 Emloyee 될 것을 의미합니다. 당신이 인터페이스는 속성이 포함시피 :

H Data { get; set; } 

H이 경우에 당신이 위의 지정된 type, 그래서 Employee 될 것입니다.

관련 문제