当前位置:  开发笔记 > 编程语言 > 正文

反序列化抽象类

如何解决《反序列化抽象类》经验,为你挑选了1个好方法。

我有一个抽象类'Server',我在我的UI中用我的JavaScript创建,然后我想在我的Web服务上有一个方法,它执行以下操作:

public List GetDatabases(Server server)
{
    Type type = server.GetType();
    Server x = null;

    if (typeof (SqlServer2005Server).Equals(type))
    {
        x = new SqlServer2005Server();
    }

    // Return the Databases from the server
    return x.GetDatabases();
}

我遇到的问题是服务器无法反序列化,因为它是抽象的,我是否需要为每个从具体类型继承的服务器获取方法,即

public List GetDatabases(SqlServer2005Server server)
{
    // Return the Databases from the server
    return SqlServer2005Serverx.GetDatabases();
}

public List GetDatabases(OracleServer server)
{
    // Return the Databases from the server
    return SqlServer2005Serverx.GetDatabases();
}

我真的很感谢你的帮助,因为我不确定什么是最好的解决方案

我收到的确切错误是:

无法创建抽象类的实例.

stephenl.. 9

WCF将支持继承,但您需要使用已知类型attibute来装饰数据协定.例如:

[DataContract]
[KnownType(typeof(Customer))]
class Contact
{
   [DataMember]
   public string FirstName
   {get;set;}

   [DataMember]
   public string LastName
   {get;set;}
}
[DataContract]
class Customer : Contact
{
   [DataMember]
   public int OrderNumber
   {get;set;}
}

HTH.



1> stephenl..:

WCF将支持继承,但您需要使用已知类型attibute来装饰数据协定.例如:

[DataContract]
[KnownType(typeof(Customer))]
class Contact
{
   [DataMember]
   public string FirstName
   {get;set;}

   [DataMember]
   public string LastName
   {get;set;}
}
[DataContract]
class Customer : Contact
{
   [DataMember]
   public int OrderNumber
   {get;set;}
}

HTH.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有