我有一个抽象类'Server',我在我的UI中用我的JavaScript创建,然后我想在我的Web服务上有一个方法,它执行以下操作:
public ListGetDatabases(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 ListGetDatabases(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.
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.