Hãy xem xét các lớp sau đây:Làm thế nào tôi có thể sử dụng Reflection để có được giá trị của một tài sản tĩnh của một loại mà không có một trường hợp cụ thể
public class AClass : ISomeInterface
{
public static int AProperty
{
get { return 100; }
}
}
sau đó tôi có một lớp học như sau:
public class AnotherClass<T>
where T : ISomeInterface
{
}
mà tôi dụ qua:
AnotherClass<AClass> genericClass = new AnotherClass<AClass>();
Làm thế nào tôi có thể nhận được giá trị tĩnh của AClass.AProperty từ bên trong genericClass của tôi mà không có một ví dụ cụ thể của AClass?
Tuyệt vời. Vấn đề duy nhất tôi đã phát hiện ra là tôi không thể định nghĩa thuộc tính tĩnh trong giao diện mà nó cần phải làm. Tôi đoán tôi có thể thêm một tài sản không tĩnh và một tài sản tĩnh trả lại cùng một giá trị, một cho các ví dụ để sử dụng và một để được tham chiếu trên các loại? Hay có cách nào khác làm tròn nó? –
Ngoài ra tôi có thể nhận được tài sản không tĩnh bằng cách sử dụng T() mới. AProperty, nhưng điều này có vẻ như nó sẽ là thực hành xấu. Bạn nghĩ sao? –
@Stewart: Vâng, việc xây dựng một 'T' mới có thể tốn kém. Thật đáng tiếc là các giao diện không thể bao gồm những thứ tĩnh. – Vlad