কিছু অতিরিক্ত কীভাবে কাঁচি কোড দিয়ে চালানো যায়। ধরুন আপনার মতো ক্লাস আছে
public class Encoder() {
public void Markdown(IEnumerable<FooContent> contents) { do magic }
public void Markdown(IEnumerable<BarContent> contents) { do magic2 }
}
ধরুন রানটাইমের সময় আপনার কাছে একটি ফুকন্টেন্ট রয়েছে
যদি আপনি কম্পাইল সময়ে বেঁধে করতে সক্ষম হয়েছি আপনি চাইবেন
var fooContents = new List<FooContent>(fooContent)
new Encoder().Markdown(fooContents)
তবে আপনি রানটাইমে এটি করতে পারবেন না। রানটাইমে এটি করার জন্য আপনি এই লাইনের সাথে কাজটি করবেন:
var listType = typeof(List<>).MakeGenericType(myType);
var dynamicList = Activator.CreateInstance(listType);
((IList)dynamicList).Add(fooContent);
গতিশীলভাবে প্রার্থনা করা Markdown(IEnumerable<FooContent> contents)
new Encoder().Markdown( (dynamic) dynamicList)
dynamicপদ্ধতি কলটিতে ব্যবহারটি নোট করুন । রানটাইমের সময়টি dynamicListহবে List<FooContent>(অতিরিক্ত হিসাবে এটিও IEnumerable<FooContent>) যেহেতু ডায়নামিকের ব্যবহার এখনও দৃ strongly়ভাবে টাইপিত ভাষায় রূট থাকে রান রান টাইম বাইন্ডার উপযুক্তটি নির্বাচন করবেMarkdown পদ্ধতিটি । যদি কোনও সঠিক ধরণের ম্যাচ না থাকে তবে এটি কোনও অবজেক্ট প্যারামিটার পদ্ধতি অনুসন্ধান করবে এবং যদি কোনও রানটাইম বাইন্ডারের সাথে মেলে না তবে সতর্ক করে যে কোনও পদ্ধতি মেলে না।
এই পদ্ধতির ফিরে আসা স্পষ্ট অঙ্কন হ'ল সংকলন সময়ে ধরণের সুরক্ষার একটি বিশাল ক্ষতি। তবুও এই লাইনগুলির সাথে কোড আপনাকে খুব গতিশীল অর্থে পরিচালনা করতে দেবে যেটি রানটাইমের সময় এখনও সম্পূর্ণরূপে টাইপ করা হবে যেমনটা আপনি প্রত্যাশা করেন।