سؤال

أفهم أن كل نوع (بخلاف بعض البدائل مثل int و string) المستخدمة في برنامج ServiceContract في WCF يجب الإعلان عن سمة ServicenType. لكن ، لقد قمت ببناء كائن مخصص ويتم نقله عبر خدمة WCF الخاصة بي دون أي مشكلة - على الرغم من أنني لم أضف خدمة معروفة لذلك. هل سيشرح أحدهم لماذا يعمل هذا؟

[ServiceContract(CallbackContract = typeof(IMyServiceCallback))]
public interface IMyService
{
    [OperationContract]
    List<MyObject> LoadMyObjects();
}

[DataContract]
public class MyObject
{
    [DataMember]
    private int batchID;
    [DataMember]
    private int fileID;
    [DataMember]
    private string fileName;
    [DataMember]
    private DateTime importStartTime;
// ...
}
هل كانت مفيدة؟

المحلول

لا ، هذا غير صحيح. هناك حاجة فقط للخدمة المعروفة (أو المعروفة في عقد البيانات) فقط للأنواع المستخدمة من قبل الخدمة ولكن لم يتم تحديدها في تعريف العملية. في حالتك ، حددت عملية LoadMyObjects التي تستخدم فئة MyObject. نظرًا لأن العملية تستخدم MyObject مباشرة ، فلن تضطر إلى إضافة myobject كخدمة servicknowntype. ولكن إذا قمت بتحديد myObject2 المستمدة من myobject ، فلن تتمكن من إرسال هذا الكائن من عملية LoadMyObjects حتى تعلن myobject2 باعتبارها servicentype.

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