1

我有一个具有构造函数和析构函数以及方法名称要求的 c++/cli 类。我需要在 c# wcf 程序中调用这个方法,所以这就是我在 c# wcf 代码中调用 c++/cli 方法所做的。

Class1 test= new Class1();
test.requirment();

我的问题是 c# 程序如何知道它指的是哪个 c++/cli 程序,我添加了这个 cli dll 作为对 c# wcf 程序的引用,并将它用作命名空间。所以我想知道我所做的是否正确,也想知道是否有其他方法可以做到这一点,或者是否需要在 c# 程序中更改任何其他设置。

4

3 回答 3

0

这是由您的项目引用定义的(右键单击项目 -> 添加引用...)。如果 C++/CLI 项目在同一解决方案中,则应将其添加到“项目”选项卡下,否则选择“浏览”并选择文件系统上的 C++/CLI 程序集。

在这方面,C++/CLI 项目和程序集与任何其他 .NET 项目或程序集没有什么不同。

为确保代码中的标识符“Class1”引用正确的类型,您可以使用 Go To Definition,它应该会显示类型的定义位置。如果存在歧义或缺少引用,则代码无论如何都不会编译。

于 2012-05-18T16:10:32.620 回答
0

在我看来,你正在做的事情是正确的,你不需要做任何其他事情。确保 Class1 在 C++/CLI 程序集中被声明为托管类(公共引用类 Class1),一切顺利。

由于您已经添加了 C++/CLI 程序集作为对具有 WPF 代码的程序集的引用,并且还在 using 子句中添加了命名空间,因此运行时和编译器有足够的信息来解决这些问题。

于 2012-05-18T16:11:31.990 回答
0

你只能做得稍微好一点,就像你已经在做的那样。如果您的 C++/CLI 类包含一些本机资源(通常是使用 C++/CLI 的唯一原因)并且您已经正确实现了 C++/CLI“析构函数”即~Class1()方法:

using (var test1 = new Class1()) {
    test1.requirement();
}

这是因为每个 C++/CLI 类IDisposable默认实现并映射~Class1()Dispose.

于 2012-05-18T17:06:04.987 回答