আমি নীচে দেওয়া হিসাবে ডেটা ট্রান্সফার অবজেক্ট (ডিটিও) শ্রেণিযুক্ত একটি প্রকল্পে এই বৈশিষ্ট্যটি সক্রিয় করেছি:
public class Connection
{
public string ServiceUrl { get; set; }
public string? UserName { get; set; }
public string? Password { get; set; }
//... others
}
তবে আমি ত্রুটি পেয়েছি:
CS8618
: নন-অযোগ্য সম্পত্তি 'সার্ভিস ইউআরএল' অবিচ্ছিন্ন is সম্পত্তি অযোগ্য হিসাবে ঘোষণা বিবেচনা করুন।
এটি একটি ডিটিও ক্লাস, সুতরাং আমি বৈশিষ্ট্যগুলি আরম্ভ করছি না। শ্রেণি আরম্ভ করার কোডের দায়িত্ব এই হবে যে বৈশিষ্ট্যগুলি অকার্যকর তা নিশ্চিত করা।
উদাহরণস্বরূপ, কলার করতে পারেন:
var connection = new Connection
{
ServiceUrl=some_value,
//...
}
আমার প্রশ্ন: সি # 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
অনুমতি না দেওয়া হয় তবে সম্পত্তিটি কখনই শূন্য হওয়া উচিত নয় । সম্ভবত, একটি মৌলিক স্ট্রিংয়ের পরিবর্তে আপনার ইউআরএলটির জন্য একটি বিশেষায়িত ক্লাস ব্যবহার করা উচিত None
যা এফ # এর বিকল্প শ্রেণীর মতো or` মিসিং` এর মান থাকতে পারে । সি # 8 আপনাকে এ জাতীয় ক্লাস লিখতে এবং প্যাটার্ন
public string ServiceUrl { get; set; } = default! ;
। আমি আশা করি রোজলিনের ভবিষ্যতে কর্টরের সুযোগের বাইরে লেট ইনিশিয়েশনাল পরিচালনা করার উপায় থাকতে পারে। আমি মেবে <T> (বিকল্প ক্লাসের মতো) ব্যবহার করছিলাম, তবে নতুন কোডের জন্য আমি সি # 8-তে প্রকারের রেফারেন্স টাইপটিতে স্যুইচ করেছি।