मैंने इस सुविधा को प्रोजेक्ट में डेटा ट्रांसफर ऑब्जेक्ट (डीटीओ) वर्गों में सक्रिय किया है, जैसा कि नीचे दिया गया है:
public class Connection
{
public string ServiceUrl { get; set; }
public string? UserName { get; set; }
public string? Password { get; set; }
//... others
}
लेकिन मुझे त्रुटि मिलती है:
CS8618
: गैर-अशक्त संपत्ति 'ServiceUrl' असिंचित है। संपत्ति को अशक्त घोषित करने पर विचार करें।
यह एक डीटीओ वर्ग है, इसलिए मैं गुणों को शुरू नहीं कर रहा हूं। यह गुण को गैर-अशक्त बनाने के लिए वर्ग को आरम्भ करने की कोड की जिम्मेदारी होगी।
उदाहरण के लिए, कॉलर कर सकता है:
var connection = new Connection
{
ServiceUrl=some_value,
//...
}
मेरा प्रश्न: C # 8 की अशक्तता संदर्भ सक्षम होने पर डीटीओ कक्षाओं में ऐसी त्रुटियों को कैसे संभालना है?
Plain Old C# Object
। किसी विशेष वर्ग से विरासत में मिले बिना, किसी भी अन्य की तरह एक वस्तु। मुझे संदेह है कि आपके पास एक अलग प्रश्न है। डीटीओ कैसे बनाएं -Data Transfer Objects
This should be the responsibility of the one initializing the class to ensure that the properties are non-null
वर्ग हमेशा एक मान्य स्थिति में होना चाहिए। यदि null
अनुमति नहीं है, तो संपत्ति कभी भी अशक्त नहीं होनी चाहिए । शायद, एक मूल स्ट्रिंग के बजाय आपको URL के लिए एक विशेष वर्ग का उपयोग करना चाहिए None
जिसमें F # में विकल्प वर्ग की तरह या 'Missing` का मान हो सकता है । C # 8 आपको ऐसी कक्षाएं लिखने और पैटर्न मिलान के साथ उनकी जांच करने की अनुमति देता है
public string ServiceUrl { get; set; } = default! ;
:। मुझे उम्मीद है कि रोजलिन के पास भविष्य में लेटर इनिशियलाइजेशन को संभालने के लिए एक रास्ता हो सकता है। मैं MayBe <T> (विकल्प वर्ग की तरह) का उपयोग कर रहा था, लेकिन मैंने नए कोड के लिए c # 8 में अशक्त संदर्भ प्रकार पर स्विच किया।