2013-06-07 17 views
5

मैं एफ # में एक अंतरफलकएसिंक एफ # इंटरफेस को कैसे परिभाषित किया जाए जिसे सी # में कार्यान्वित किया जा सकता है?

type IConnect = 
    abstract Update: seq<DataType> -> Async<bool> 

मैं एक ही appdomain में अन्य ऐप्स की तरह इसे लागू करने के लिए इतना है कि मैं अद्यतन पर किसी भी है कि इंटरफ़ेस को लागू (मैं एक TinyIoC कंटेनर में कार्यान्वयन इकट्ठा) कॉल कर सकते हैं होगा परिभाषित किया है । रिटर्न टाइप Async<bool> इंगित कर सकता है कि अपडेट सफल हुआ है या नहीं, इसके लिए इंतजार किए बिना। और मैं समानांतर में ऐप्स अपडेट कर सकता हूं।

अन्य ऐप्स सी # में लिखे गए हैं और जब मैंने एक संदर्भ (नकली) कार्यान्वयन लिखना शुरू किया, तो मुझे एहसास हुआ कि किसी भी कार्यान्वयनकर्ता को FSharpAsync प्रकार का उपयोग करने की आवश्यकता होगी जो बहुत सुंदर नहीं है।

तो, मैं इंटरफ़ेस को कैसे परिभाषित करूं ताकि सी # में कार्यान्वित करना आसान हो और एसिंक पहलुओं को बनाए रखा जा सके?

उत्तर

3

Task या शायद IObservable का उपयोग करें। आप async वर्कफ़्लो और Task<T>quiteeasily के बीच परिवर्तित कर सकते हैं और यह सी # या अधिकांश नेट भाषाओं में काम करने के लिए एक आसान प्रकार है।

type IConnect = abstract Update: seq<DataType> -> Task<bool> 
+0

धन्यवाद, 'Async.AwaitTask: टास्क <'a> -> Async <'a>' ठीक से काम करने लगता है – Remko

संबंधित मुद्दे