protobuf-net使用基类而不是派生类时继承链中的泛型类

时间:2013-03-05 04:00:25

标签: .net wcf c#-4.0 protobuf-net

我们正在使用protobuf-net对以下类的WCF服务进行序列化。

[DataContract]
[KnownType(typeof(NamedViewModel))]
public class NamedViewModel<TKey> : IViewModel
{
    [DataMember]
    public virtual TKey Id { get; set; }

    [DataMember]
    public virtual string Name { get; set; }
}

[DataContract]
[KnownType(typeof(ScheduleTemplateViewModel))]
public class NamedViewModel : NamedViewModel<int>
{
}

[DataContract]
public class ScheduleTemplateViewModel : NamedViewModel
{
    [DataMember]
    public string Comment { get; set; }
}

我们有一个基本上做的自定义例程(简化为简洁)。

type.GetAttributes<KnownTypeAttribute>().Select(a => a.Type).Distinct().ForEach(t => AddKnownTypeHierarchy(t));  

public static void AddKnownTypeHierarchy(Type type)
{

    ProtoBuf.Meta.MetaType metaType = RuntimeTypeModel.Default.Add(type, true);
    ...
    metaType.AddSubType( ...
    ...
}

我们在WCF服务上收到以下错误。

{"Unable to cast object of type 'Castle.Proxies.NamedViewModel`1Proxy' to type 'Presentation.ViewModels.ScheduleTemplateBuilder.ScheduleTemplateViewModel'."}

如何解决此问题?

提前致谢。

0 个答案:

没有答案