هل من الممكن لإرجاع مجموعة من كائن واجهة بدلا من كائن؟

StackOverflow https://stackoverflow.com/questions/610339

سؤال

ولدي واجهة أن يصف قائمة المتخصصة في طلبي ...

Public Interface IAlphabeticListItem

    Property StartingLetter() As String
    Property DetailsList() As Generic.List(Of DetailsData)

End Interface

وكائنات متعددة تنفذ هذه الواجهة، ولكن أريد أن أعود لهم في خدمة ويب وليس كما الكائن الأساسي، ولكن كما واجهة.

<WebMethod()> _
Public Function GetCategoryList(...) As Generic.List(Of IAlphabeticListItem)

    ...

End Function

للأسف، وهذا يسبب استثناء

لا يمكن إجراء تسلسل اجهة IAlphabeticListItem.

وتفاصيل الاستثناء: System.NotSupportedException: لا يمكن إجراء تسلسل اجهة IAlphabeticListItem

هل هناك طريقة لجعل واجهة تسلسل، أو أنا ذاهب لدينا لتحويل كل الكائنات الخاصة بي في فئة محددة تنفيذ واجهة، ومن ثم العودة تلك الفئة؟

هل كانت مفيدة؟

المحلول

ونعم ولا. لا يمكنك فضح مباشرة الطبقة العامة للالتسلسل XML لأنه غير معتمد. ولكن هل يمكن أن يعرض واجهة غير العامة على نفس جمع وتسلسل ذلك. هذا بلوق يذهب الى قدر كبير من التفصيل حول كيفية جعل هذا العمل

HTTP: / /srtsolutions.com/blogs/billwagner/archive/2006/11/20/xml-serialization-and-generic-interfaces.aspx

نصائح أخرى

وليس لدي الوقت لاختبار ذلك الآن، ولكن في C # يمكنك توسيع واجهات، ولذا فإنني افترض أنك تستطيع أن تفعل ذلك في VB.NET.

وجعل مجرد IAlphabeticListItem تمديد ISerializable

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