এক্সটেনশন মেথড বিদ্যমান টাইপগুলোতে নতুন কোনো ডিরাইভড টাইপ তৈরি না করে, রিকম্পাইল না করে, বা মূল টাইপটি অন্যভাবে পরিবর্তন না করেই মেথড যোগ করার সুযোগ দেয়। এগুলো স্ট্যাটিক মেথড হিসেবে ডিফাইন করা হয়, কিন্তু ইনস্ট্যান্স মেথড সিনট্যাক্স ব্যবহার করে কল করা হয়। এদের প্রথম প্যারামিটারের আগে this মডিফায়ার থাকে এবং সেই প্যারামিটারই বলে দেয় মেথডটি কোন টাইপের উপর কাজ করে। এগুলো নেমস্পেস লেভেলে স্কোপে আনা হয়।
public static int WordCount(this string str)
{
return str.Split().Length;
}
"Hello World".WordCount();
// => 2
এই অনুশীলনীতে আপনি লগ-লাইন প্রসেস করবেন।
প্রতিটি লগ লাইন একটি স্ট্রিং, যার ফরম্যাট নিম্নরূপ: "[<LEVEL>]: <MESSAGE>".
এখানে তিনটি ভিন্ন লগ লেভেল আছে:
INFOWARNINGERRORআপনার কয়েকটি কাজ আছে, যার প্রত্যেকটি একটি লগ লাইন নেবে এবং সেটি নিয়ে আপনাকে কিছু করতে বলবে।
গত মাসের লগগুলো দেখে আপনি বুঝতে পারেন যে টেস্ট মেসেজটি সর্বদা একটি নির্দিষ্ট সাবস্ট্রিংয়ের পরে অবস্থান করে। আপনি আশা করছেন যে খুব শীঘ্রই আপনাকে টেস্ট মেসেজটি বের করতে হবে, তাই সেটির জন্য একটি হেল্পার মেথড তৈরি করার সিদ্ধান্ত নেন।
(static) LogAnalysis.SubstringAfter() এক্সটেনশন মেথডটি ইমপ্লিমেন্ট করুন, যা একটি স্ট্রিং ডেলিমিটার নেয় এবং ডেলিমিটারের পরে থাকা সাবস্ট্রিং রিটার্ন করে।
var log = "[INFO]: File Deleted.";
log.SubstringAfter(": "); // => returns "File Deleted."
আরও খেয়াল করলে আপনি দেখবেন যে লগ লেভেলটি সর্বদা তৃতীয় বন্ধনীর ([ এবং ]) মধ্যে অবস্থান করে। আপনি এটাও আশা করছেন যে খুব শীঘ্রই আপনাকে লগ লেভেলটি বের করতে হবে, তাই সেটির জন্যও আরেকটি হেল্পার মেথড তৈরি করার সিদ্ধান্ত নেন।
(static) LogAnalysis.SubstringBetween() এক্সটেনশন মেথডটি ইমপ্লিমেন্ট করুন, যা দুটি স্ট্রিং ডেলিমিটার নেয় এবং দুটি ডেলিমিটারের মাঝখানে থাকা সাবস্ট্রিং রিটার্ন করে।
var log = "[INFO]: File Deleted.";
log.SubstringBetween("[", "]"); // => returns "INFO"
একটি লগে থাকা মেসেজ রিটার্ন করার জন্য (static) LogAnalysis.Message() এক্সটেনশন মেথডটি ইমপ্লিমেন্ট করুন।
var log = "[ERROR]: Missing ; on line 20.";
log.Message(); // => returns "Missing ; on line 20."
একটি লগের লগ লেভেল রিটার্ন করার জন্য (static) LogAnalysis.LogLevel() এক্সটেনশন মেথডটি ইমপ্লিমেন্ট করুন।
var log = "[ERROR]: Missing ; on line 20.";
log.LogLevel(); // => returns "ERROR"
Exercism-এ সাইন আপ করুন, C# ট্র্যাকের 62টি কনসেপ্ট178টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।