में जेनेरिक प्रकारों के रनटाइम जबरन मेरे पास एफ # में स्पष्ट जेनेरिक तर्कों के साथ एक बेस क्लास है। मैं यह जांचने की कोशिश कर रहा हूं कि दिए गए प्रकार का उपयोग मैं एक विशिष्ट इंटरफ़ेस लागू करता हूं या नहीं। मैंने सोचा था कि "अगर ओब: ISysAware फिर" जानकारी के आधार पर यह क्रम बलात्कार या प्रकार से प्रकार परीक्षण 'ISysAware करने के लिए एक शामिल है एक अनिश्चित प्रकार: करना होगा, लेकिन शिकायत हमेशा एक ही है:एफ #
let (|SysAware|_|) t =
match t with
| :? ISysAware as p -> Some(p)
| _ -> None
त्रुटि FS0008 इस कार्यक्रम बिंदु से पहले। कुछ प्रकारों पर रनटाइम प्रकार परीक्षण की अनुमति नहीं है। आगे के प्रकार एनोटेशन की आवश्यकता है।
मैं स्पष्ट रूप से यहां प्रतिबिंब का उपयोग नहीं करना चाहूंगा। IsAssignable है एक उच्च लागत पर, चाल चल जाएगा।
विचार?
दिलचस्प है, लेकिन मैं क्या ज़रूरत है। – hammett