سؤال

ولدي فئة مجردة 'خادم' وهو ما خلق في بلدي جافا سكريبت في واجهة المستخدم الخاص بي، وبعد ذلك أريد أن يكون أسلوب على خدمة ويب الخاص بي الذي يفعل ما يلي:

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();
}

وقضية أواجه هو أنه Server لا يمكن إلغاء تسلسل كما هو مجردة، هل أنا بحاجة إلى وسيلة لكل ملقم لدي الذي يرث من نوع ملموس أي بمعنى

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 دعم الميراث، ولكن تحتاج لتزيين عقد البيانات الخاصة بك مع نوع 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.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top