gpt4 book ai didi

c# - WCF 将自定义对象传递给客户端并运行其方法

转载 作者:行者123 更新时间:2023-11-30 21:12:03 25 4
gpt4 key购买 nike

这既是一个设计问题,也是一个技术问题。我不确定我这样做是否正确...

我有一个 WCF API,它与 DB 通信并传回一个 Person 对象(在单独的 .dll 中定义),它具有方法和属性。该对象正在从 WCF 发送到调用客户端。

我想在客户端调用 Person 的方法。我知道这些不能从 API 发送到下游。但是,如果我引用 WCF 使用的相同 .dll,我是否应该能够将 API Person 转换为 .dll Person 然后运行这些方法?

我希望清楚我要实现的目标。

最佳答案

WCF 通过数据协定工作。这些是要返回的数据模型,例如具有属性的 Person 对象。在将对象从 Service 传输到 Client 的过程中,不要担心方法。如果使用数据协定,并且您将引用 WCF,则代理类将生成一个 Person 对象。

如果您的逻辑更复杂,我想这取决于您的情况。让我用几句话来描述:

  1. 如果你不能改变类的源,而你想调用一个公共(public)方法,最好使用反射。因此,您从 WCF 接收一个对象,使用返回值设置 Person 对象的属性,然后调用该方法。

  2. 如果可以更改类的源代码,则可以创建一个基接口(interface) IPerson,使用类中 Person 对象的属性实现此接口(interface)并返回一个 IPerson 对象。在这种情况下,您将能够执行类型转换。

更多详情:好的,让我为您提供更多详细信息:

  1. 作为最佳实践,我建议使用接口(interface)创建单独的类。这应该是一个数据契约(Contract)接口(interface),它将描述您的对象。像这样:

    [DataContract] 
    public interface IPerson
    {
    [DataMember]
    public int Identifier { get; set; }

    [DataMember]
    public string First { get; set; }

    [DataMember]
    public string Last { get; set; }

    public string GetSomething();
    }
  2. 您在 WCF 上实现的方法应该返回 IPerson 类型。

  3. 在共享类中,请为您的Person 对象实现接口(interface)IPerson
  4. 在您的服务和客户端项目中引用此程序集。
  5. 在您的客户端项目中添加对 WCF 服务的网络引用。
  6. 您的方法将返回类型为 IPerson 的对象,因此您可以使用共享库中的 Person 对象,并使用其所有方法。

关于c# - WCF 将自定义对象传递给客户端并运行其方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com