我有一个抽象类“服务器”,该类在我的UI的JavaScript中创建,然后希望在Web服务上有一个方法可以执行以下操作:

public List<Database> 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<Database> GetDatabases(SqlServer2005Server server)
{
    // Return the Databases from the server
    return SqlServer2005Serverx.GetDatabases();
}

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

非常感谢您的帮助,因为我不确定什么是最佳解决方案

我收到的确切错误是:

最佳答案

WCF将支持继承,但是您需要使用已知类型的修饰符修饰数据协定。例如:

[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。

关于c# - 反序列化抽象类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/634040/

10-14 16:39