ऐसा करने का एक बेहतर तरीका होना चाहिए ?! मैं गड़बड़ कर रहा था?. आदि लेकिन इसके लिए उचित संदर्भ का पता नहीं लगा सके। मुझे कंसोल आउटपुट में कई और आइटम जोड़ने की आवश्यकता है, इसलिए कई और नेस्टेड ट्राई-कैच जोड़ना अभी तक करने योग्य है। 4 अलग-अलग वस्तुओं को संभालना होगा जो अपवाद फेंक सकते हैं।

शायद, मुझे राइटलाइन स्टेटमेंट से पहले स्ट्रिंग पीस का निर्माण करना चाहिए?

"अभी के लिए" मेरे पास यह गड़बड़ है:

foreach (WorkItem workItem in workItems){
// write work item to console
try  // ideal both assigned and tagged
{
    Console.WriteLine("{0} {1} {2} {3} {4} {5}", workItem.Id, 
    workItem.Fields["System.Title"], workItem.Fields["System.WorkItemType"], 
    workItem.Fields["System.AssignedTo"], workItem.Fields["System.State"], 
    workItem.Fields["System.Tags"]);
}
catch (Exception) // at least one not correct, maybe two
{
    try  // is it the assigned?
    {
        Console.WriteLine("{0} {1} {2} {3} {4} {5}", workItem.Id, 
        workItem.Fields["System.Title"], 
        workItem.Fields["System.WorkItemType"], "Unassigned", 
        workItem.Fields["System.State"], workItem.Fields["System.Tags"]);
    }
    catch (Exception)
    {
        try // is it the tags?
        {
            Console.WriteLine("{0} {1} {2} {3} {4} {5}", workItem.Id, 
            workItem.Fields["System.Title"], 
            workItem.Fields["System.WorkItemType"], 
            workItem.Fields["System.AssignedTo"], 
            workItem.Fields["System.State"], "NoTags");

        }
        catch (Exception)  // its both
        {
            Console.WriteLine("{0} {1} {2} {3} {4} {5}", workItem.Id, 
            workItem.Fields["System.Title"], 
            workItem.Fields["System.WorkItemType"], "Unassigned", 
            workItem.Fields["System.State"], "NoTags");
        }
    }
}

}

-1
David Elgstuen 14 नवम्बर 2019, 18:50

1 उत्तर

सबसे बढ़िया उत्तर

टिप्पणियों की चर्चा के आधार पर। मैं नीचे दिए गए समाधान को सारांशित करना चाहता हूं। विचार साझा करने के लिए जुहर और सेल्विन को धन्यवाद।

1,चूंकि फील्ड्स.Contains("") त्रुटि फेंकता है। आप workItem.Fields.ContainsKey() का उपयोग कर सकते हैं। उदाहरण कोड नीचे जैसा है:

workItem.Fields.ContainsKey("name") ? workItem.Fields["name"] : "default"

2, TryGetValue() का उपयोग करें

workItem.Fields.TryGetValue("System.AssignedTo", out Object identityOjbect)? identityOjbect:"not exist"
2
Levi Lu-MSFT 15 नवम्बर 2019, 09:24