Tôi có một lớp cơ sở, với một phương pháp, nơi tôi muốn sử dụng Generics để buộc các coder để sử dụng một biểu thức tổng quát trên lớp hiện tại:Làm thế nào để tham khảo kiểu lớp hiện tại sử dụng Generics
public class TestClass
{
public void DoStuffWithFuncRef<T>(Expression<Func<T, object>> expression) where T : TestClass
{
this.DoStuffWithFuncRef(Property<T>.NameFor(expression));
}
}
Bây giờ , Tôi muốn buộc T là loại của lớp instantiated, mà tôi hy vọng sẽ gây ra trình biên dịch C# để tự động hiểu loại chung để sử dụng. Ví dụ. Tôi muốn tránh mã hóa các phương pháp doStuff dưới đây, nơi tôi phải xác định đúng loại - nhưng thay vì sử dụng phương pháp doStuffILikeButCannotGetToWork:
public class SubTestClass : TestClass
{
public string AProperty { get; set; }
public void doStuff()
{
this.DoStuffWithFuncRef<SubTestClass>(e => e.AProperty);
}
public void doStuffILikeButCannotGetToWork()
{
this.DoStuffWithFuncRef(e => e.AProperty);
}
}
Đây có phải là có thể? Tôi có nên làm điều này theo một cách khác không?
Cảm ơn bạn. Tôi đã không nghĩ đến việc tạo ra một lớp chung hoàn chỉnh theo cách mà bạn descibe, nhưng nó hoạt động và gây ra ít cú pháp trên đầu. – Thies