2011-01-18 31 views
5

Tôi có định nghĩa enum trong một mô-đun (A), ví dụ: THÀNH CÔNG = 0, INVALID_REQ = 1 vv Sau đó, tôi có một dll (mô-đun B) trong đó có tập hợp riêng của nó về tình trạng enum. Khi chúng ta thêm một giá trị enum mới trong A, chúng ta phải tự thêm nó vào B vì A nằm trong .NET và B là mã C. Bên cạnh đó, enum trong A chỉ là một phần của trạng thái enum trong B (B có trạng thái bên trong riêng của nó bên cạnh trạng thái từ A). Điều này có vẻ là một sự kết nối rất chặt chẽ giữa hai mô-đun này. Bất kỳ đề xuất để làm cho chúng ít hơn? Thx!Chuyển đổi Enum giữa các mô-đun

+0

Vấn đề lớn nhất ở đây là không giữ hai đồng bộ (mặc dù đó là một vấn đề), nhưng thực tế là enum trong B có nghĩa là một cái gì đó khác với enum trong A. Bây giờ bạn mở ra khả năng muốn thêm một phần tử mới vào A, nhưng đột nhiên nó mâu thuẫn với một giá trị bên trong đang được sử dụng bởi B. Nếu bạn cần sao chép các giá trị cho mục đích của khả năng tương tác, sử dụng nó _only_ cho khả năng tương tác và quản lý trạng thái nội bộ riêng biệt. –

+1

Có một * hợp đồng ngầm * đang diễn ra ở đây. Hãy tưởng tượng HTTP2 thêm một động từ mới nói, [JABBERWOCKY] (http://www.jabberwocky.com/carroll/jabber/jabberwocky.html). Tất cả các máy khách/máy chủ HTTP2 cần phải được mã hóa với kiến ​​thức về hợp đồng này. Sử dụng các phiên bản [giao thức] rõ ràng, có lẽ với bảo vệ và [tương thích xuống] (http://en.wikipedia.org/wiki/Backward_compatibility), có thể hữu ích để nắm bắt và/hoặc giảm thiểu sự không phù hợp. Có công cụ để giúp chia sẻ thông tin về hợp đồng - hãy tưởng tượng [COM IDL] (http://en.wikipedia.org/wiki/Component_Object_Model) hoặc các máy phát điện khác. –

+0

@Dan: Tôi đang suy nghĩ sử dụng các giá trị enum trong A và xác định const trong B bắt đầu từ 100 (0-99 từ A). Sau đó, sử dụng số nguyên thay vì enum làm giao diện của B. Cả trạng thái A và B đều có thể bị lộ ra khỏi giao diện của B và không phải lo lắng A và B can thiệp lẫn nhau. – Icerman

Trả lời

2

Tại sao không viết một tập lệnh đơn giản tạo ra các enums này dựa trên một tệp trong khi xây dựng? Nếu bạn thực sự muốn tách chúng ra, bạn sẽ cần phải biến ai đó thành thạo và phơi bày nội dung của nó sang phía bên kia .. Có thể sử dụng RCW ..

+0

* ho * IDL COM? * ho * –

+0

:) Đó không phải là kết thúc của thế giới để viết .. :) – gbvb

1

Điều gì sẽ là thú vị khi sử dụng sự phản chiếu ở đây. Viết một chương trình nhỏ đọc enum bằng cách phản chiếu từ mô-đun A và tạo tệp .h để sử dụng trong mô-đun c.

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