لماذا لا يلزم حاجة إلى servowntype لكائني؟
-
29-09-2019 - |
سؤال
أفهم أن كل نوع (بخلاف بعض البدائل مثل 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.