gpt4 book ai didi

.net - 抽象类的所有派生类型的 KnownType?

转载 作者:行者123 更新时间:2023-12-04 01:07:42 27 4
gpt4 key购买 nike

我们有一个抽象类,它是我们通过 WCF 服务发送的许多不同请求的基础。每次我们添加新请求时,我们都必须记住添加 [KnownType],这是一个丑陋的令人发指的 hack。属性到这个基类。

有没有办法告诉DataContractSerializer将此抽象类型的所有派生视为 KnownType ?

最佳答案

我在 WCF 服务中遇到了同样的问题,并做了以下“不那么令人发指”的黑客攻击来解决已知的类型限制。我只是为了显示替代选项而进行概述,由您决定它是否更好。

  • 在服务启动时,通过反射加载您想要公开的类型。例如。如果所有暴露于 WCF 的实体都派生自一个公共(public)抽象基(或更多),则从它们应该位于的程序集中加载所有类型。出于性能原因静态缓存这些类型。
  • 创建一个返回上述缓存类型的静态方法,具有以下签名:public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
  • 使用以下属性标记 WCF 接口(interface)[ServiceKnownType("GetKnownTypes", typeof(StaticClassThatCachesTypes))]

  • 这应该让您自动公开所有类型为 或 将是 从您选择的基类派生,只要 future 的开发人员将它们放在正确的程序集中。

    关于.net - 抽象类的所有派生类型的 KnownType?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6266403/

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