2017-02-13 6 views
10

सी # 7.0 में, नेट एक नया वापसी मान टपल प्रकार (कार्यात्मक प्रोग्रामिंग) का परिचय है, इसलिए बजाय:उपयोग मूल्य tuples के लिए जिम्मेदार बताते हैं

(User, Info) Lookup(int id) 
:

[NotNull] 
WrapperUser Lookup(int id) 

मैं मूल्य tuples उपयोग करना चाहते हैं

और मैं इन वापसी प्रकार के लिए विशेषताओं का उपयोग करना चाहते हैं:

([NotNull] User, [CanBeNull] Info) Lookup(int id) 

लेकिन VS2017 मुझे यह करने के लिए अनुमति नहीं है। मैं रैपर वर्ग का उपयोग किए बिना विशेषताओं का उपयोग कैसे कर सकता हूं?

उत्तर

1

आप नहीं कर सकते।

(User, Info) Lookup(int id) 

के लिए

ValueTuple<User,Info> Lookup(int id) 

बस वाक्यात्मक चीनी है ValueTuple के प्रकार के मापदंडों विशेषताओं के लिए कोई वैध लक्ष्य कर रहे हैं। आपका एक आवरण वर्ग के अलावा एकमात्र विकल्प एक NonNullable wrapper

(NonNullable<User>,NonNullable<Info>) Lookup(int id) 

जो आप यह सिर्फ तरह उपयोग करने के लिए अनुमति देता है में प्रकार पैरामीटर रैप करने के लिए है एक सामान्य ValueTuple, उदा

(NonNullable<User>,NonNullable<Info>) Lookup(int id) => (new User(), new Info()); 
(User user, Info info) = Lookup(5); 

नहीं तो आप यह दर्शाता है जो टपल तत्वों एक सरणी के साथ null हो सकता है, TupleElementNamesAttribute कि टपल तत्वों के नाम आवंटित किया जाता है की तरह पूरे ValueTuple लिए एक कस्टम विशेषता छड़ी सकता है। आपको अपना खुद का विजुअल स्टूडियो/रिशेर्पर प्लगइन लिखना होगा जो यद्यपि काम करता है।

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