- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 wcf 服务,它有 3 个方法,获取项目列表、添加项目和获取单个项目。
从基类继承的类型有 4 种可能。对于每个派生类,该服务都使用 ServiceKnownType 进行装饰。
当我使用该服务并且不选择重新使用程序集和引用 pocos 时,getlist 会按预期工作。当我重新使用程序集时,列表会抛出序列化异常。
查看 wcf 客户端生成的 reference.cs 文件,我可以看到 KnownTypeAttribute 是在已生成的基类上创建的。在我重新使用基类的项目中,它用 ServiceKnownTypeAttribute 来装饰方法。
所以在调用 web 方法返回列表时,我得到以下信息......反序列化器不知道映射到该名称的任何类型。考虑使用 DataContractResolver 或将对应于“TheChildObject”的类型添加到已知类型列表中 - 例如,通过使用 KnownTypeAttribute 属性或将其添加到传递给 DataContractSerializer 的已知类型列表中。
是否有解决此问题的方法?一定很常见吧?
最佳答案
我在相关接口(interface)上面加了这么一行
[ServiceKnownType("GetKnownTypes", typeof(KnownTypesHelper))]
和实现
public static class KnownTypesHelper
{
/// <summary>
/// Lists all WCF known types
/// </summary>
/// <param name="provider"></param>
/// <returns>A collection of all WCF known types</returns>
public static IEnumerable<Type> GetKnownTypes(ICustomAttributeProvider provider)
{
System.Collections.Generic.List<System.Type> knownTypes =
new System.Collections.Generic.List<System.Type>();
knownTypes.Add(typeof(WrntyCommon.WrntyDBEnums));
// Add any types to include here.
knownTypes.Add(typeof(AAA));
knownTypes.Add(typeof(BBB));
knownTypes.Add(typeof(CCC));
return knownTypes;
}
}
关于c# - 重新使用程序集时,ServiceKnownTypes 列表在 WCF 客户端上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17652732/
我有一个工作的 WCF 接口(interface),在契约(Contract)中使用了 100 多个 ServiceKnownType,如下所示: [ServiceKnownType(typeof(R
据我了解,WCF ServiceContract 中使用的每种类型(除了一些原语,如 int 和 string)都需要使用 ServiceKnownType 属性进行声明。但是,我已经构建了一个自定义
在将数据传回客户端时,我如何告诉 WCF 服务使用什么 KnownTypes? 我知道我可以使用 [ServiceKnownType]属性,这使得服务调用从 WCF 测试服务器运行良好,但它仍然从客户
我在运行 ServiceKnownType 属性中指定的辅助方法时遇到问题。为简单起见,我有两个程序集:一个带有我的服务接口(interface)和数据契约接口(interface),另一个带有我的服
我有一个基类 Fallible和几个派生类 Success , Failure和 BadIdea将在 WCF 服务调用的返回值中使用。 作为我previously discovered ,为了让它工作
我有以下内容: [ServiceContract] [ServiceKnownType(typeof(ActionParameters))] [ServiceKnownType(typeof(Spor
我有一个 wcf 服务,它有 3 个方法,获取项目列表、添加项目和获取单个项目。 从基类继承的类型有 4 种可能。对于每个派生类,该服务都使用 ServiceKnownType 进行装饰。 当我使用该
当我尝试从 MSDN 实现 ServiceKnownType 示例时遇到了一个问题。 在示例中,它们提供以下类: [DataContract()] public class Widget {
我正在实现以下 WCF 服务 [ServiceContract] [ServiceKnownType(typeof(Person))] public interface IPe
我有一个 WCF 服务;此服务有一个操作接收类型为 Request 的参数。 .这只是基本类型,在调用操作时,我们实际上发送了一个 Request_V1 类型的值。 (从 Request 继承),它具
我有一个托管在 IIS 中的 WCF 服务。此服务由通用接口(interface)定义,接口(interface)类型作为参数或返回类型,因此我们使用 ServiceKnownType 属性在运行时定
我是一名优秀的程序员,十分优秀!