c# - 如何将 C++/CLI 引用类设置为 WCF 的数据成员?

标签 c# wcf c++-cli

我正在尝试将我的 C# 应用程序转换为 WCF 服务。

在 C# 应用程序中,有一些 C++/CLI 类。

我需要通过 WCF 将该类作为返回值发送给客户端。

我可以将 [DataContract] 用于 c++/CLI 引用类吗?

这里是示例代码

// This is C++/CLI Class
using namespace System;
using namespace System::Runtime::InteropServices;

namespace CLIClass
{   
    class TestClass
    {
    public:
        int index;
        int test;
    };
}

.

//This is WCF service code.
[ServiceContract]
public interface IService1
{
    [OperationContract]
    TestClass GetData(int index);   // I need to return "TestClass"
}

//    
[DataContract]
/* How can I make a Data Contract? */

最佳答案

您可以像添加任何其他属性一样添加[DataContract] 属性。

就您而言,问题来自于您没有声明ref class(托管类),而是声明class( native 类)。只需使用ref class,您就可以编写:

namespace CLIClass
{  
    [System::Runtime::Serialization::DataContract]
    ref class TestClass
    {
    public:
        [System::Runtime::Serialization::DataMember] property int index;
        [System::Runtime::Serialization::DataMember] property int test;
    };
}

(并避免在头文件中使用命名空间)

您需要添加对 System.Runtime.Serialization 程序集的引用,可以通过项目属性或添加以下行来完成此操作:

#using <System.Runtime.Serialization.dll>

关于c# - 如何将 C++/CLI 引用类设置为 WCF 的数据成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31240667/

相关文章:

c++ - 有没有更好的方法在 C++/CLI 中使用 system() 重定向标准输出?

c# - 使控制台不可见的命令参数

java - C# 和 Java Web 服务集成

wcf - 在 WCF 服务上调用 Close() 之前,我是否应该检查是否已经关闭?

javascript - JSONP 从 WCF 服务获取缓存响应时出现问题

listview - 如何在C++中向行和列添加数据

c# - 单元测试 Web 服务方法

javascript - 列表到 Jquery 数据表 c#

c# - 如何检查类型是否实现了 ICollection<T>

visual-c++ - 从 C++-CLI 中的指针函数返回多维数组