এটি সম্ভবত সম্ভব নয় তবে আমার এই ক্লাসটি রয়েছে:
public class Metadata<DataType> where DataType : struct
{
private DataType mDataType;
}
এর আরও অনেক কিছু আছে তবে আসুন এটি সহজ রাখি। জেনেরিক টাইপ (ডেটা টাইপ) যেখানে স্টেটমেন্ট অনুসারে মান প্রকারের মধ্যে সীমাবদ্ধ। আমি যা করতে চাই তা হ'ল বিভিন্ন ধরণের (ডেটা টাইপ) এই মেটাডেটা অবজেক্টগুলির একটি তালিকা। যেমন:
List<Metadata> metadataObjects;
metadataObjects.Add(new Metadata<int>());
metadataObjects.Add(new Metadata<bool>());
metadataObjects.Add(new Metadata<double>());
এটা কি সম্ভব?
বিমূর্ত বেস শ্রেণি এবং ইন্টারফেস উভয়ই তালিকায় যুক্ত হতে পারে এমন উপাদানগুলির সীমাবদ্ধ করে নিয়ন্ত্রণের একটি ডিগ্রি সরবরাহ করে। এতে বক্সিং কীভাবে আসে তাও আমি দেখতে পাচ্ছি না।
—
0b101010
অবশ্যই, আপনি যদি .NET v4.0 বা উচ্চতর ব্যবহার করে থাকেন তবে সম্মতি হ'ল সমাধান।
—
0b101010
List<Metadata<object>>
কৌতুক করে
@ 0b101010, উভয়ই কেবলমাত্র রেফারেন্স প্রকারকে সীমাবদ্ধ করে, কোনও বিল্ট-ইন মান ধরণের এবং যে কোনও স্ট্রাক্ট এখনও যুক্ত করা যায়। এছাড়াও, শেষে, আপনার
—
সায়েব আমিনী
MetaData
প্রতিটি মৌলের অন্তর্নিহিত মান ধরণের সম্পর্কে কোনও (সংকলন সময়) তথ্য না দিয়ে আপনার মূল মানের প্রকারের পরিবর্তে রেফারেন্স প্রকারের একটি তালিকা রয়েছে , এটি কার্যকরভাবে "বক্সিং"।
List<object>
? তারা বক্সিং / আনবক্সিং বন্ধ করবে না, তারা ingালাইয়ের প্রয়োজনীয়তা সরিয়ে দেবে না এবং শেষ পর্যন্ত আপনি এমন একটিMetadata
বস্তু পেয়ে যা যা আপনাকে প্রকৃত সম্পর্কে কিছু না বলেDataType
, আমি এই সমস্যাগুলি সমাধান করার সমাধান খুঁজছিলাম। আপনি যদি কোনও ইন্টারফেস / শ্রেণি ঘোষণা করতে চলেছেন, কেবল প্রয়োগকারী / উত্পন্ন জেনেরিক প্রকারটিকে জেনেরিক তালিকায় রাখতে সক্ষম হবেন, অর্থহীন স্তর ব্যতীত অন্যটি ব্যবহার করা ছাড়া এটি কতটা আলাদাList<object>
?