2009-03-11 34 views
28

Tôi định sử dụng các đối tượng khác nhau được hiển thị dưới dạng đối tượng COM. Để làm cho chúng dễ sử dụng hơn, tôi muốn bọc chúng thành các đối tượng C#. Cách tiếp cận tốt nhất cho việc này là gì?Cách tốt nhất để truy cập các đối tượng COM từ C#

+0

Mads Torgersen ngôn ngữ "quản lý sản phẩm" cho C# đã nói trong podcast DeepFriedBytes cuối cùng về C# mà họ đã thêm hoặc đang thêm một số tính năng để giảm bớt sự tương tác với COM. Nếu tôi chỉ có thể nhớ nó là gì ... – f3lix

+0

Tôi nghĩ bạn đang đề cập đến loại biến 'động' sắp tới trong C# 4.0. Từ khóa mới này làm cho nó dễ dàng hơn, nhưng nó đã có thể với C#. –

Trả lời

29

Nếu thư viện đã được đăng ký, bạn có thể thực hiện các bước sau đây để có Visual Studio tạo một Interop Assembly cho bạn:

  • Mở đối với dự án Visual Studio của bạn.
  • Nhấp chuột phải vào 'Tham khảo' (ngay bên dưới dự án trong Solution Explorer của bạn) và chọn 'Thêm tham chiếu'.
  • Chọn tab COM.
  • Chọn Thành phần bạn muốn tương tác.
  • Chọn 'ok'.

Đây sẽ là lớp hoặc tập hợp các lớp C# bao bọc tất cả nội dung giao diện COM với lớp C# bình thường. Sau đó, bạn chỉ cần sử dụng nó giống như bất kỳ thư viện C# khác. Nếu việc nhập tham chiếu hoạt động tốt, bạn có thể khám phá nó giống như bất kỳ tham chiếu nào khác và các phương thức/cấu trúc/lớp/hằng số sẽ hiển thị trong không gian tên đó và intellisense.

Điều này sẽ giúp bạn bắt đầu, ít nhất. Nếu điều này được triển khai trong một môi trường công ty hoặc một trong những bạn có thể kiểm soát, điều này có thể là tất cả những gì bạn cần.

4

Bạn có thể (ban đầu) chỉ cần nhập tham chiếu. Nếu bạn cần kiểm soát nhiều hơn (hoặc nhận được lỗi từ nhập khẩu của VS), bạn có thể sử dụng tlbimp trong cửa sổ sdk. Điều này sẽ tạo ra các hội đồng interop. Bạn có thể nhận định nghĩa lớp từ siêu dữ liệu.

EDIT: Đây thực sự là rất nhiều phức tạp hơn nếu bạn muốn làm việc với 64 bit

+0

Tại sao nó khó khăn hơn hoặc khác biệt? chỉ cần sử dụng tlbimp từ bộ công cụ x64 .Net –

+0

Dự đoán của tôi sẽ là bất kỳ hội đồng phụ thuộc nào sử dụng kiến ​​trúc 32 bit. Tôi biết rằng phiên bản 64-bit của các ứng dụng sử dụng 32-bit biên dịch COM Interop hội đồng không hoạt động và ngược lại. Tôi luôn luôn ấn tượng rằng x64 có thể chạy một trong hai kiến ​​trúc, nhưng đó rõ ràng không phải là trường hợp. –

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