2011-06-28 65 views
8

Các Func <> và Hành động <> đại biểu từ các phiên bản sau của .NET rất hấp dẫn và được chứng minh ở nhiều nơi có thể dễ dàng được tái tạo trong mã nhắm mục tiêu .NET 2.0, chẳng hạn như here.C# Func <> đại biểu trong thư viện

Tuy nhiên, từ góc độ của thư mục nhắm mục tiêu .NET 2.0, có thể được tiêu thụ bởi các ứng dụng được xây dựng dựa trên bất kỳ phiên bản .NET cao hơn nào, cách này chồng lên nhau. Việc triển khai "lớp tương thích" này trong thư viện hoàn toàn là công thức cho xung đột (cả về giao diện riêng tư và công khai), hay có cách nào để làm cho công việc này độc lập với khung mục tiêu mà ứng dụng tiêu thụ xây dựng chống lại?

Nếu điều này là không khởi động, sẽ tốt hơn cho một trong hai: A) Xác định tập hợp giống hệt các đại biểu tham số có tên gọi khác nhau? hoặc .. B) Gắn bó chặt chẽ với quy ước .NET 2.0 và xác định các loại đại biểu mới khi tôi cần chúng?

+5

Nếu bạn đang xây dựng một thư viện nhắm mục tiêu .NET 2.0, hãy thử sử dụng các đại biểu hiện có trong khung khi có thể.Nếu không, hãy tự tạo của riêng bạn nhưng _do not_ trong mọi trường hợp đặt tên cho chúng hoặc tạo các đại biểu "mục đích chung" để phản ánh các đại biểu bạn tìm thấy trong .NET 3.0 trở lên. Điều đó sẽ chỉ dẫn đến sự nhầm lẫn. Các lớp tương thích là không cần thiết vì các đại biểu tương thích có thể chuyển đổi được với nhau. –

Trả lời

6

Sự thật đơn giản là Func<>Action<>ý tưởng hay. Chúng làm cho mã của bạn dễ đọc hơn nhiều và chúng tránh được một số lượng lớn các khai báo ủy nhiệm soạn thảo lộn xộn. Đó là lý do tại sao bạn muốn sử dụng chúng.

Vì vậy, bạn có kiểu lập trình hấp dẫn này mà bạn muốn sử dụng, đó là một kỹ thuật tiêu chuẩn hiện nay được sử dụng phổ biến thay cho cách cũ, nhưng bạn không thể sử dụng nó vì bạn đang nhắm mục tiêu phiên bản cũ của khung công tác . Những gì bạn nên làm?

Bạn có ba lựa chọn:

  1. Sử dụng các phong cách lập trình đó là sử dụng phổ biến trước khi tính năng
  2. Thêm tính năng mã của riêng bạn trong tinh thần nhưng với phi mâu thuẫn tên
  3. Thêm tính năng cho mã của riêng bạn với tên "thực" nhưng trong không gian tên của riêng bạn

Sử dụng kiểu lập trình cũ cung cấp tất cả những lợi ích mà chúng tôi đã đánh giá cao từ kỳ tích ure. Đó là một sự hy sinh lớn. Nhưng có lẽ tất cả các đồng phát triển của bạn đều quen với kiểu lập trình này.

Sử dụng tính năng có tên không xung đột có vẻ hợp lý đủ. Mọi người sẽ có thể đọc mã và hưởng lợi từ các tính năng, nhưng không ai sẽ bị nhầm lẫn rằng chúng dường như là một cái gì đó mà họ không. Khi bạn cuối cùng đã sẵn sàng để nâng cấp, bạn sẽ phải vá tên. May mắn là Ctrl + R, Ctrl + R làm việc đó rất dễ dàng.

Sử dụng tính năng có cùng tên với tính năng chuẩn có nghĩa là mã của bạn có thể nhắm mục tiêu phiên bản cũ hơn nhưng có vẻ như đang sử dụng các tính năng mới hơn. Có vẻ như thắng/thắng. Nhưng điều này có thể gây nhầm lẫn và bạn phải cẩn thận rằng các kiểu của bạn không được tiếp xúc với các assembly không rõ ràng khác, có thể gây ra các vấn đề biên dịch ở mức nguồn. Vì vậy, bạn phải cẩn thận và hoàn toàn rõ ràng về những gì đang xảy ra. Nhưng nó có thể hoạt động hiệu quả.

Bạn phải chọn bất kỳ cách tiếp cận nào có ý nghĩa trong tình huống của bạn tùy thuộc vào nhu cầu của bạn. Không có một câu trả lời đúng cho tất cả mọi người, chỉ thương mại-off.

+0

Vì thiếu các câu trả lời khác cho tôi biết, tôi sẽ giả sử không có giải pháp thông minh cho vấn đề này. Mặc dù những sự cân bằng này đã được đặt ở phía sau đầu của tôi, đó là một câu trả lời hợp lý. –

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