2010-08-04 29 views
7

Hỗn hợp chính xác là gì?
Có bất kỳ kỹ thuật nào để đạt được điều đó trong C# không?Hỗn hợp và .net

+3

Wikipedia nếu bạn không biết gì giống như tôi: http: // vi.wikipedia.org/wiki/Mixin – Rup

Trả lời

4

Tôi không có chuyên gia, nhưng đây là những gì tôi tìm thấy.

  1. Mixins in C# 3.0
  2. Implementing Mixins with C# Extension Methods

Từ MSDN Blog:

Mixins In C#

Một số người cho rằng phương pháp khuyến nông trong sắp tới C# 3.0 là một loại mixins, bởi vì bạn có thể đưa vào chức năng trong các phương pháp và tùy tiện tag nó vào bất kỳ lớp học mà bạn muốn. Trong đặc điểm kỹ thuật C# 2.0 phần 20.1.3 nó được gọi rõ ràng là rằng lớp cơ sở của lớp chung là phải là lớp được xây dựng do đó quy tắc này sử dụng phương pháp trên để sử dụng trong C#. Tôi không phải là quá chắc chắn về lý do chúng tôi chọn một cách rõ ràng không cho phép lớp con trừu tượng. Vì C# không hỗ trợ đa thừa kế, IMO nên đã hỗ trợ mã hóa kiểu Mixin.

6

Hỗn hợp là tập hợp các thành viên lớp có thể được "trộn" vào một lớp mà không gặp sự cố đa thừa kế.

C# không có kết hợp mỗi lần, nhưng cung cấp Phương thức mở rộng cho các mục tiêu tương tự.

+0

Mặc dù không hoàn toàn là mixin. Có dễ dàng để xem ví dụ trong bất kỳ ngôn ngữ giả hay thực? –

+2

@NoProblemBabe: Ví dụ, Ruby cung cấp hỗn hợp 'Enumerable' có thể trộn vào các lớp được liệt kê để mở rộng lớp với các phương thức lọc, ánh xạ và sắp xếp. C# /. NET có lớp 'Enumerable' tĩnh cung cấp các phương thức mở rộng để lọc, ánh xạ và sắp xếp các lớp được liệt kê (" LINQ "). – dtb

+0

giao diện công cộng IEmailItem { chuỗi SendToName {get; bộ; } chuỗi SendToAddress {get; bộ; } } sau đó một phương thức mở rộng SendMail (IEmailItem m này) {một số mã thực sự ở đây} mọi lớp triển khai giao diện IEmailItem sẽ "kế thừa" phương thức gửi thư – eloycm

5

Vui lòng kiểm tra re-mix on codeplex.com. Nó là một thư viện mã nguồn mở để mang mixin đến .NET

Ở đó bạn sẽ có hướng dẫn từng bước về cách triển khai mixin với liên kết .NET

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