2009-07-08 29 views

Trả lời

19

Bạn có thể nếu có một số loại để hạn chế T để:

public int SomeMethod(T t) where T : ISomeInterface 
{ 
    // ... 
} 

public interface ISomeInterface 
{ 
    int Age { get; } 
} 

Loại có thể là một lớp cơ sở thay vì - nhưng phải có một cái gì đó để cho trình biên dịch biết rằng chắc chắn sẽ có thuộc tính Age.

(Trong C# 4 bạn có thể sử dụng gõ năng động, nhưng tôi sẽ không làm điều đó trừ khi nó là một đặc biệt là tình hình "đặc biệt" mà thực sự chứng minh nó.)

+0

đánh bại tôi vào nó ... xóa bài viết của tôi trong sự xấu hổ một lần nữa. –

+0

cảm ơn, bây giờ tôi biết những gì "nơi T: IBlah" có nghĩa là. – Blankman

9

Mở rộng về câu trả lời của Jon.

Tuy nhiên, một cách khác là để có một cách tiếp cận chức năng cho vấn đề

public int SomeMethod(T t, Func<T,int> getAge) { 
    int blah = getAge(t); 
    ... 
} 
+0

Tâm trí của Grrrreatt giống nhau :) – leppie

+0

Ow. Đầu tôi đau. :) –

+0

để Func lấy T làm tham số và trả về int? Tôi nghĩ Func đề cập đến cả hai đầu vào cho hàm getAge. – Blankman

3

Làm thế nào về:

public class Blah 
{ 
    public int SomeMethod(Func<int> get_age) 
    { 
    int blah = get_age(); 
    return blah; 
    } 
} 
+0

điều này đang sử dụng một đại biểu? – Blankman

+0

Có, chỉ là một đại biểu đơn giản. – leppie

Các vấn đề liên quan