تستهلك صافي رأس المال العامل الخدمات الراحة عن طريق التفكير

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

  •  06-07-2019
  •  | 
  •  

سؤال

وأنا أحاول أن تستهلك خدمة WCF بقية عن طريق التفكير إذا أمكن ذلك. نلقي نظرة على رمز أدناه:

    public static object WCFRestClient<T>(string method, string uri, params object[] args)
    {        
        object o;
        object ret;
        using (ChannelFactory<T> cf = new ChannelFactory<T>(new WebHttpBinding(), uri))
        {                
            T contract = cf.CreateChannel();
            ret = contract.GetType().GetMethod(method).Invoke(o, args);

        }
        return ret;
    }

وكما ترون أنه هو وسيلة عام يأخذ T في وقت التشغيل ... بلادي المشكلة هي، وأنا لست متأكدا إذا كنت يمكن أن تعكس حقا على الكائن قناة أنا خلق فوق .... دعونا نقول أن أفعل، ثم تبدأ المتاعب عندما كنت ترغب في إنشاء مثيل كائن ... وبما أنني لا يمكن إنشاء مثيل كائن من واجهة ...

ووسأكون سعيدا لسماع حول ما إذا كان هناك أي وسيلة أخرى لتحقيق ذلك؟ لكني أفضل أن استخدام آلية القناة إذا ما أستطيع.

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

المحلول

في عام، وخلق ChannelFactory كل عملية مكلفة. يجب عليك تجنب ذلك إن أمكن. نمط using هو أيضا مشكلة لأنواع ICommunicationObject في صندوق رأس المال العامل، منذ Dispose() يتوافق عموما Close() التي هي دعوة حجب / استثناء رمي. هل تريد أن ندعو Close() بدلا صراحة والتعامل مع TimeoutException وCommunicationException.

وبصرف النظر عن ذلك، نهجكم سوف تعمل. إذا كنت تستخدم ChannelFactory<T>.CreateChannel، فإنه سيتم إنشاء كائن وكيل شفافة من نوع T التي يمكن أن يطلق عليها عن طريق التفكير إذا كنت تريد. لذلك سوف لا داعي للقلق حول إنشاء كائن من واجهة عقد - WCF لا بالفعل أن

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

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