প্রদত্ত শ্রেণীর জন্য আমি ট্রেসিং কার্যকারিতা রাখতে চাই অর্থাত আমি প্রতিটি পদ্ধতি কল (পদ্ধতির স্বাক্ষর এবং প্রকৃত প্যারামিটার মান) এবং প্রতিটি পদ্ধতির প্রস্থান (কেবল পদ্ধতি স্বাক্ষর) লগ করতে চাই।
আমি এটি ধরে নিয়ে কীভাবে এটি সম্পাদন করব:
- আমি সি # এর জন্য কোনও তৃতীয় পক্ষের এওপি লাইব্রেরি ব্যবহার করতে চাই না,
- আমি যে সমস্ত পদ্ধতিতে ট্রেস করতে চাইছি তাতে আমি নকল কোড যুক্ত করতে চাই না,
- আমি ক্লাসের পাবলিক এপিআই পরিবর্তন করতে চাই না - শ্রেণীর ব্যবহারকারীদের সমস্ত পদ্ধতিতে একই পদ্ধতিতে কল করতে সক্ষম হওয়া উচিত।
প্রশ্নটি আরও কংক্রিট করার জন্য ধরে নেওয়া যাক এখানে 3 শ্রেণি রয়েছে:
public class Caller
{
public static void Call()
{
Traced traced = new Traced();
traced.Method1();
traced.Method2();
}
}
public class Traced
{
public void Method1(String name, Int32 value) { }
public void Method2(Object object) { }
}
public class Logger
{
public static void LogStart(MethodInfo method, Object[] parameterValues);
public static void LogEnd(MethodInfo method);
}
আমি কিভাবে ডাকা না Logger.LogStart এবং Logger.LogEnd প্রতি কলের জন্য Method1 এবং Method2 পরিবর্তন ছাড়া Caller.Call পদ্ধতি এবং স্পষ্টভাবে কল যোগ ছাড়া Traced.Method1 এবং Traced.Method2 ?
সম্পাদনা: যদি আমাকে কল পদ্ধতিটি কিছুটা পরিবর্তন করার অনুমতি দেওয়া হয় তবে এর সমাধান কী হবে?