Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在服务项目(WCF)和其他项目之间共享数据_C#_Wpf_Wcf - Fatal编程技术网

C# 如何在服务项目(WCF)和其他项目之间共享数据

C# 如何在服务项目(WCF)和其他项目之间共享数据,c#,wpf,wcf,C#,Wpf,Wcf,(编辑)->我有一个不同项目的解决方案。它有一个奇怪的结构,因为我不是一个专业的软件工程师。该解决方案由三部分组成:一个HMI项目(WPF)、业务项目(类库类型)和服务项目(WCF) 在business项目中,我做了一些有结果的过程,结果保存在一个静态类中。这个结果在前面提到的WPF项目的屏幕中公开,现在我需要通过WCF项目中的一个服务来传输这些数据 该对象类似于: [DataContract] public class ObjectToTransfer { [DataMember]

(编辑)->我有一个不同项目的解决方案。它有一个奇怪的结构,因为我不是一个专业的软件工程师。该解决方案由三部分组成:一个HMI项目(WPF)、业务项目(类库类型)和服务项目(WCF)

在business项目中,我做了一些有结果的过程,结果保存在一个静态类中。这个结果在前面提到的WPF项目的屏幕中公开,现在我需要通过WCF项目中的一个服务来传输这些数据

该对象类似于:

[DataContract]
public class ObjectToTransfer
{
    [DataMember]
    public string ParameterOne = string.Empty;
    [DataMember]
    public string ParameterTwo = string.Empty;
}
另一方面,从属于业务项目的静态类中提取信息的方法如下:

[ServiceBehavior]
public class Service: IService
{
    public ObjectToTransfer SendObject()
    {
    return new ObjectToTransfer{
      ParameterOne = BusinessProject.StaticClass.ResultOne,
      ParameterTwo = BusinessProject.StaticClass.ResultTwo
    };
}
当我使用服务时,结果是一个参数为1和2的对象为空。另外,当我在两个项目都运行的情况下调试解决方案时,静态类的属性中没有信息。。。这就像两个项目是否独立运行,尽管它们都在相同的解决方案下…,这就像它们之间是否没有关系。错在哪里


提前谢谢你

您需要做的主要事情是将
DataContract
类更改为具有适当getter和setter的类

[DataContract]
public class ObjectToTransfer
{
    [DataMember]
    public string ParameterOne { get; set; }
    [DataMember]
    public string ParameterTwo { get; set; }
}
这一点之所以重要,是因为WCF在尝试将数据从服务器序列化到客户端时的工作方式。本质上,服务器端的类与客户机上生成的类相匹配。(它们共享相同的类架构。)如果类没有适当的结构,则无法设置数据。成员基本上是只读的

您现在在类中拥有的是公共成员变量,它们被设置为始终返回
string.Empty
。WCF不能这样做,它太严格了。服务器和客户端需要能够读取和写入所有
DataMember
属性,因此需要
{get;set;}

进行此更改后,不要忘记刷新服务引用


如果您需要一些好的资源来学习WCF,请查看这些视频。它们有点过时,但所有的概念仍然适用。

这可能太晚了,而且我是WCF服务的新手,因此我将根据我在不同项目之间共享数据的做法进行共享

我的项目背景: 我有一个WCF服务(主机)、一个客户端和一个服务器项目。(总共3个不同的项目。)我将在WCF服务中执行必要的计算。之后,我将把结果共享给客户机和服务器。因此,有一个变量variableA,我在3个项目中共享

我所做的: 在WCF服务中,我声明
variableA
并将其标记为
static

private **static** string variableA;
只有在我将
variableA
标记为static之后,我才能在不同的项目中看到相同的
variableA


我不确定这是否有帮助,但这就是我在我的案例中所做的。

静态对象在每个AppDomain中存在一次。无论如何,读取并创建一个.WCF在WPF项目中称为服务引用。就在通常的参考下面。我不理解你的评论凯李…非常感谢你的回答,但这并不能解决我的问题。。。我无法独立于setter和getter从WCF服务项目中读取静态类