2010-04-26 53 views
2

我的工作是从.NET 3.5访问CPRBA服务器应用程序。在评估像IIOP.Net(未定义状态)之类的项目和像VisiBroker(昂贵)之类的产品之后,我想“自己做”,并围绕C++编写一个.Net-Wrapper - 存根生成了我的Omniidl(Omniorb IDL到C++生成器)。这意味着围绕非托管C++代码编写一些托管代码(CLI)层。我该如何开始编写围绕C++ Omniorb存根的.Net包装器

我的问题是:有没有人在这个主题的经验?我真的不知道如何做到最好。现在我打算为每个非托管类创建一个托管类,每个托管类本身都有一个非托管类实例的成员,这个实例不是垃圾收集的。这是做这件事的正确方法还是我走错了路?

在此先感谢!

回答

1

从我的经验来看,这是解决这个问题的一种方法 - 对于每个非托管类编写一个包装.NET类。你应该考虑使用代码生成,这样你就不需要编写很多代码。

另一个选择是围绕常用功能创建.NET包装 - 您可以通过使用外观来减少一些工作 - 如果您有多个需要单个操作的类或一组操作,您可以创建一个.NET类管理所有这些类。

+0

谢谢你的回答! 我也认为“包装一切”会花费太多精力,编写某种外观,因此只包装所需的方法和结构听起来更合理。 代码生成的声音也是互动的:你会碰巧知道任何可以做这项工作的可推荐的代码生成器吗? :) – Superfisi 2010-04-29 12:25:31

+0

您可以使用Code smith(http://www.codesmithtools.com/)来生成您的代码 – 2010-04-29 16:47:29