2012-07-08 28 views
5

Tôi hy vọng có một số cách thông minh để thực hiện việc này. Tôi có một dịch vụ cơ sở chung có một số phương pháp ... Vì vậy, hiện tại có một số phương thức trong lớp cơ sở này như Create (T obj). Những gì tôi muốn là cho trình biên dịch để tạo ra một tên tham số trực quan hơn (dựa trên một số quy tắc) để khi một trường hợp cụ thể của dịch vụ cơ sở được tạo ra như thế này:Tạo tên thông số có ý nghĩa với Generics

public class ProductService : BaseService<Product> 

Tôi muốn biên dịch phương pháp ProductService này (ví dụ):

public Product Create(Product product) 

thay vì

public Product Create(Product obj) 

tôi biết nó có vẻ nhỏ nhưng một thực tập sinh hỏi tôi ngày khác và tôi không thể nói với anh ấy chắc chắn 100% rằng nó là không thể.

+2

Tôi không biết cách nào để thực hiện những gì bạn đang yêu cầu, nhưng ngay cả bằng cách sử dụng 'thực thể' apposed để' obj' sẽ có ý nghĩa hơn với tôi đọc mã của bạn. Đặc biệt là nếu lớp được thừa hưởng từ một giao diện 'IEntity' hoặc từ một lớp' Entity' cơ sở. – Paul

+0

Thật vậy ... đã đồng ý ... – Rikon

Trả lời

3

Theo như tôi biết, không có cách nào để đạt được điều này tự động. Tuy nhiên, nếu bạn thực sự muốn làm điều đó dù sao, bạn có thể làm phương pháp virtual trong BaseService, và ghi đè lên nó trong mỗi lớp con:

public override Product Create(Product product) { 
    return base.Create(product); 
} 
+2

Tôi đồng ý đó có lẽ là cách tốt nhất để đạt được những gì mà người đăng ký yêu cầu, nhưng điều đó nghe có vẻ như rất nhiều nỗ lực cho một lợi ích thực sự nhỏ. Tôi sẽ không tư vấn thực sự làm điều đó, nhưng nó sẽ hoạt động. –

+0

@JonathanRupp: +1; đồng ý - đặc biệt, bởi vì 'Product obj' hoặc' Product entity' vẫn có ý nghĩa ngữ nghĩa. –

+0

Vâng ... Đôi khi có những phụ đề nhỏ mà tôi bỏ lỡ nhân dịp ... Tôi đã hy vọng cho một cái gì đó như khoảng trống công cộng Chèn (T @@ T.GetType(). Name.ToLower()) Hơn nữa, với tâm lý đó, tôi có thể biên dịch thời gian phản ánh trên T ... Nhưng ồ ... hãy để tôi có một đội bóng tuyệt vời, tôi đoán ... – Rikon

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