2013-01-04 25 views
5

Tôi có một lớp chung mà trông như thế này:Generic Base Class với Constructor

public class DataServiceBase<T> : Screen where T : EntityManager, new(){ 

    private T _entityManager; 

    public T EntityManager { 
     get { 
      if (_entityManager == null) 
      { 
       _entityManager = new T(); 
      } 
      return _entityManager; 
     } 
    } 

Về cơ bản tất cả Tôi đang cố gắng làm là tạo ra một EntityManager của nếu nó không tồn tại. Điều này thực sự hoạt động tốt. Tuy nhiên, tôi cần phải sửa đổi điều này khi T không còn có một hàm tạo parameterizerless nữa. Và vì vậy tôi không thể sử dụng phương pháp này cả.

Nhưng tôi cần EntityManager đánh mạnh mẽ ở cấp độ xuất phát của DataService vì các trình quản lý thực thể khác nhau xử lý các thực thể khác nhau.

Tôi không chắc chắn cách giải quyết vấn đề này. Một thay thế tôi đã cố gắng là:

public DataServiceBase(EntityManager entityManager) { 
     this._entityManager = entityManager; 

    } 

Nói cách khác, tôi vượt qua nó vào các nhà xây dựng, nhưng bây giờ tôi không còn có tài sản đánh máy mạnh mẽ.

Greg

Trả lời

8

Chỉ cần đưa ra lập luận constructor có loại generic cũng

public DataServiceBase(T entityManager) { 
    this._entityManager = entityManager; 

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