Thực hiện chức năng với lớp kiểu T ( lớp chưa xác định trước, chị xác định tại thời điểm run-time )
- Systax :
modifier return-type nameOfMethod<TEntity> ( parameters with TEntity type ) where TEntity : ...
- Với cú pháp Where ta có cac ràng buộc bên dưới như sau:
| |
---|---|
| |
| |
| |
| |
| |
| |
- Nếu chúng ta ko sử dụng where để ràng buộc điều kiện cho kiểu T thì sẽ báo lỗi "Compile Error"
public IShape GetRectangle<TEntity>()
{
//báo lỗi tại đây vì chưa chác TEntity chúng ta đưa vào là kiểu được Implement ( hay Inheritance ) từ IShape
return new TEntity()
}
- Ví dụ : trong Method chúng ta muốn NEW 1 Class thuộc lớp Interface IShape
//với where TEntity : IShape , new() cho biết lớp TEntity đưa vào phải được Implement ( hay Inheritance ) từ IShape và có thể được NEW 1 đối tượng
public IShape GetRectangle<TEntity>() where TEntity : IShape , new()
{
return new TEntity()
}
- Usage
//lop RectangleExtra
class RectangleExtra : IShape{...}
interface IShape{...}
public void Method()
{
//khi do shape sẽ là kiểu RectangleExtra
IShape shape = GetRectangle<RectangleExtra>() ;
}
No comments:
Post a Comment