আপনার একটি প্রতিনিধি ব্যবহার করা দরকার । এই ক্ষেত্রে আপনার সমস্ত পদ্ধতি একটি string
প্যারামিটার নেয় এবং একটি ফিরিয়ে দেয় int
- এটি Func<string, int>
ডেলিগেট 1 দ্বারা সর্বাধিক সহজভাবে প্রতিনিধিত্ব করা হয় । সুতরাং আপনার কোডটি এর মতো সাধারণ পরিবর্তনের সাথে সঠিক হতে পারে:
public bool RunTheMethod(Func<string, int> myMethodName)
{
// ... do stuff
int i = myMethodName("My String");
// ... do more stuff
return true;
}
ডেলিগেটস এর চেয়ে অনেক বেশি শক্তি আছে, স্বীকারোক্তি দিয়ে। উদাহরণস্বরূপ, সি # এর মাধ্যমে আপনি ল্যাম্বডা এক্সপ্রেশন থেকে একটি প্রতিনিধি তৈরি করতে পারেন , যাতে আপনি আপনার পদ্ধতিটি এভাবে চালিয়ে যেতে পারেন :
RunTheMethod(x => x.Length);
এটি এর মতো একটি বেনামি কার্য তৈরি করবে:
// The <> in the name make it "unspeakable" - you can't refer to this method directly
// in your own code.
private static int <>_HiddenMethod_<>(string x)
{
return x.Length;
}
এবং তারপরে সেই প্রতিনিধিটিকে RunTheMethod
পদ্ধতিতে পাস করুন ।
আপনি ইভেন্ট সাবস্ক্রিপশন, অ্যাসিনক্রোনাস এক্সিকিউশন, কলব্যাকস - সমস্ত ধরণের জিনিসগুলির জন্য প্রতিনিধিদের ব্যবহার করতে পারেন। এগুলি পড়ার পক্ষে এটি উপযুক্ত, বিশেষত যদি আপনি লিনকিউ ব্যবহার করতে চান। আমার একটি নিবন্ধ রয়েছে যা বেশিরভাগই প্রতিনিধি এবং ইভেন্টগুলির মধ্যে পার্থক্য সম্পর্কে রয়েছে তবে আপনি এটি যেভাবেই কার্যকর পেতে পারেন।
1 এটি কেবল Func<T, TResult>
ফ্রেমওয়ার্কে জেনেরিক প্রতিনিধি প্রকারের ভিত্তিতে ; আপনি সহজেই নিজের ঘোষণা করতে পারেন:
public delegate int MyDelegateType(string value)
এবং তার MyDelegateType
পরিবর্তে প্যারামিটারটি টাইপ করুন।