我正在尝试将我的 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/