Tôi có một ứng dụng lớn được viết bằng ngôn ngữ gốc C++. Tôi cũng có một lớp trong C# mà tôi cần phải gọi.C++ Interop: Làm thế nào để gọi một lớp C# từ bản C++, với việc xoay lớp không tĩnh?
Nếu lớp C# là tĩnh, thì nó sẽ là tầm thường (có rất nhiều ví dụ trên web) - chỉ cần viết trình bao hỗn hợp C++/CLI, xuất giao diện và bạn đã hoàn tất.
Tuy nhiên, lớp C# không tĩnh và không thể thay đổi thành tĩnh vì nó có giao diện (trình biên dịch sẽ tạo ra lỗi nếu bạn cố gắng tạo lớp C# tĩnh).
Có ai đó gặp sự cố này trước đây không - làm cách nào để xuất một lớp C# không tĩnh thành bản C++?
Cập nhật 2010-11-09
giải pháp cuối cùng: cố gắng COM, điều này làm việc độc đáo nhưng không hỗ trợ cấu trúc. Vì vậy, đã đi với một wrapper C++/CLI, bởi vì tôi hoàn toàn cần thiết để có thể vượt qua các cấu trúc giữa C + + và C#. Tôi đã viết một chế độ hỗn hợp .dll wrapper dựa trên mã ở đây:
Như lớp mục tiêu là không tĩnh, tôi đã phải sử dụng singleton để đảm bảo rằng tôi chỉ đang tạo một bản sao của lớp đích. Điều này đảm bảo mọi thứ đã đủ nhanh để đáp ứng các thông số kỹ thuật.
Liên hệ với tôi nếu bạn muốn tôi đăng dự án demo (mặc dù, công bằng, tôi gọi C# từ C++, và những ngày này hầu hết mọi người muốn gọi C++ từ C#).
Tôi biết tôi sẽ cần điều này trong một vài tuần, vì vậy tôi rất quan tâm đến câu trả lời. – dwo
Chết tiệt, đó là một cái nhìn giống như cưa. Ngay ở cuối câu hỏi, khi bạn ít mong đợi nhất! –