次のクラスのWCFサービスでのシリアル化にprotobuf-netを使用しています。
[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'."}
この問題はどのように解決できますか?
前もって感謝します。