多个服务的WCF之间的共享类型

2024-03-12

我有一个 Java Web 服务器,它有 2 个端点:系统管理和用户管理。两个端点使用相同的库。因此,这两个端点中的几乎所有类都是相同的。

我有一个使用这两个服务的 C# 客户端。我知道WCF可以共享类。所以我创建了一个新项目,并让我的客户项目引用新项目。然后在新项目中创建一个公共类“会话”。

namespace WcfExplore.UserManagement
{
    [DataContract]
    public partial class session : object, System.ComponentModel.INotifyPropertyChanged
    {
        private string sessionIdField;
        private string useridField;

        [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 3)]
        [DataMember]
        public string sessionId
        {
            get { return this.sessionIdField; }
            set
            {
                this.sessionIdField = value;
                this.RaisePropertyChanged("sessionId");
            }
        }
        [System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, Order = 4)]
        [DataMember]
        public string userid
        {
            get { return this.useridField; }
            set
            {
                this.useridField = value;
                this.RaisePropertyChanged("userid");
            }
        }

        public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

        protected void RaisePropertyChanged(string propertyName)
        {
            System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
            if (propertyChanged != null)
                propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
        }
    }
}

但是当我更新服务引用时,视觉工作室仍然自行生成类“会话”。

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.225")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(Namespace="http://iboss2.service.iasia.com/")]
public partial class session : object, System.ComponentModel.INotifyPropertyChanged {

    private string sessionIdField;

    private string useridField;

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=3)]
    public string sessionId {
        get {
            return this.sessionIdField;
        }
        set {
            this.sessionIdField = value;
            this.RaisePropertyChanged("sessionId");
        }
    }

    /// <remarks/>
    [System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, Order=4)]
    public string userid {
        get {
            return this.useridField;
        }
        set {
            this.useridField = value;
            this.RaisePropertyChanged("userid");
        }
    }

    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;

    protected void RaisePropertyChanged(string propertyName) {
        System.ComponentModel.PropertyChangedEventHandler propertyChanged = this.PropertyChanged;
        if ((propertyChanged != null)) {
            propertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
        }
    }
}

怎么做才能让2个服务引用使用公共类?我不希望两个服务引用生成自己的重复类。


您可以尝试重用引用程序集中的类型生成第二个服务参考时的选项。这将迫使 Visual Studio 反映第一个服务引用的类型,并尝试在可能的情况下引用它们,而不是在不同的命名空间中重新创建它们。

通过以这种方式指定重用,Visual Studio 在后台使用 /r 标志调用 svcutil.exe。

但是,svcutil.exe 使用DataContractSerializer帮助生成代码,不幸的是这有一个相当一套严格的规则 http://msdn.microsoft.com/en-us/library/ms733112.aspx当涉及到解析您的服务合同时。

因此,除非您维护 XSD 并遵守这组规则,否则 svcutil.exe 将改用XmlSerializer,它不支持 /r 标志(或重复使用)。因此您将无法重用类型。

您还可以使用WSCF.蓝色 http://wscfblue.codeplex.com/生成您的服务合同,因为它有自己的自定义序列化程序并支持类型的重用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个服务的WCF之间的共享类型 的相关文章

随机推荐

  • 如何限制受保护方法只能访问子类

    我们如何限制对任何受保护方法的访问仅限于任何包中的子类 而不是同一包中的类 如果任何类不是子类并且位于同一包中 它也必须抛出异常 例如 受保护的方法 编辑 有什么方法可以检查调用类名实例 然后我们可以使用进行验证实例化 这不可能 您可以选择
  • 依赖注入容器?它有什么作用?

    我一直在阅读有关 DI 的内容 它似乎是一个足够简单的概念 我没有得到的是容器 假设我想创建自己的容器 使用像 检测 这样的动词 我不明白容器如何 检测 创建了新的依赖对象并知道注入它的依赖项 对我来说 这个容器就像是一个光荣的工厂 谁能解
  • Azure静态Web应用程序环境变量

    我正在尝试通过 Azure Static Web 应用程序发布 Gatsbyjs 我有一个插件 gatsby source contentful 我需要传递如下变量 resolve gatsby source contentful opti
  • 如何调试 vscode 扩展的 WebView javascript

    我正在构建 vscode 扩展 但无法在 WebView 中的 Javascript 中设置断点 即使 WebView 是一个单独的进程 有没有办法调试 Javascript 具体来说 我正在尝试合并 Telerik TreeView Tr
  • OpenCV 3.4.3 中对“cv::String::deallocate()”错误的未定义引用[重复]

    这个问题在这里已经有答案了 我最近安装了 OpenCV 3 4 3 但 OpenCV 中的一些库没有运行 这是我的示例代码 include
  • 将 Youtube Gdata json 解析为 ListView

    我一直在尝试在 Android 中找到 解析 Youtube Gdata JSON 的工作示例来填充列表视图 我一直在阅读这个问题 https stackoverflow com questions 9555511 android pars
  • RxJava 并行获取 Observables

    我需要一些帮助来在 RxJava 中实现并行异步调用 我选择了一个简单的用例 其中第一个调用获取 而不是搜索 要显示的产品列表 平铺 随后的调用将获取 A 评论和 B 产品图像 经过几次尝试我到达了这个地方 1 Observable
  • 找不到实体框架 4 注释

    我正在尝试使用注释将 POCO 类映射到我的数据库表 我需要使用Table注释来指定我的表的名称 但我无法解析Table注解 注 我导入了System Data Entity命名空间 但它不起作用 我必须导入哪个命名空间才能使用 EF 注释
  • Flutter Admob AppID 使用 Android 还是 iOS?

    当我们在admob控制台中制作AdMob应用程序时 我们可以选择Android或iOS应用程序 这意味着有 2 个不同的 ID 我们应该在 Flutter AdMob 插件中使用哪一个 FirebaseAdMob instance init
  • 如何将 Rails 视图助手提取到 gem 中?

    我有一组经常使用的 Rails 视图助手 并且想将它们打包成一个 gem 这样我就可以在 Gemfile 中添加一行 并从我的视图中访问这些助手 我在使用 Bundler 和 Jeweler 之前已经创建了 gem 但是 我不太清楚如何在
  • 从回溯的角度解释BFS和DFS

    关于深度优先搜索的维基百科 深度优先搜索 DFS 是一种 遍历或搜索的算法 树 树结构或图 一 从根开始 选择一些 节点作为图例中的根 并尽可能地探索回溯之前的每个分支 那么什么是广度优先搜索呢 一种选择起始点的算法 节点 检查所有节点回溯
  • 通过代码隐藏加载silverlight到aspx页面

    我需要通过单击该页面上的按钮在 aspx 页面的一部分中加载 silverlight 应用程序 一些初始化参数需要根据单击按钮时主机页面上的用户输入传递到 silverlight 应用程序 怎么做 我想我需要从代码隐藏创建 silverli
  • python中用于列表操作的plus和append有什么区别? [复制]

    这个问题在这里已经有答案了 可能的重复 Python的append 与列表上的 运算符 为什么它们会给出不同的结果 https stackoverflow com questions 2022031 python append vs ope
  • 如何查看 nginx 尝试访问文件的实际文件路径?

    现在我已经设置了 Nginx 来提供我确信是有效的文件路径的服务 但是 它给了我一个 404 未找到 我看过 var log nginx access log它向我展示了 05 Oct 2016 19 15 50 0500 GET menu
  • PagedListAdapter 不使用 DiffUtil 使数据无效

    每次我调用无效数据时 我的 DIFF UTIL 都不会被使用 日志未显示 整个列表已更新为新数据 导致屏幕移动位置等 不确定这里的问题是什么 I have PagedListAdapter with a LiveData
  • 平方根元函数?

    是否可以使用具有以下签名的元函数计算整数的平方根 template
  • Pandas DataFrame 删除 groupby 中的行

    我有一个包含三列的 DataFrameDate Advertiser和身份证 我首先对数据进行分组 看看某些广告商的列是否太小 例如当count 少于 500 然后我想将这些行删除到组表中 df groupby Date Advertise
  • android 如何动态改变进度条背景颜色

    我想动态改变android中进度条的背景颜色 我遵循本教程页面末尾附近的 奖励 部分 http colintmiller com 2010 10 how to add text over a progress bar on android
  • java Swing 背景图像

    我正在使用 JFrame 并且在框架上保留了背景图像 现在的问题是图像的大小小于框架的大小 所以我必须在窗口的空白部分再次保留相同的图像 如果用户单击最大化按钮 我可能必须在运行时将图像放在框架的空白区域 谁能告诉我如何实现这个目标 听起来
  • 多个服务的WCF之间的共享类型

    我有一个 Java Web 服务器 它有 2 个端点 系统管理和用户管理 两个端点使用相同的库 因此 这两个端点中的几乎所有类都是相同的 我有一个使用这两个服务的 C 客户端 我知道WCF可以共享类 所以我创建了一个新项目 并让我的客户项目