আমি কেবল এটি সেখানে ফেলে দিতে চেয়েছিলাম যে প্রসঙ্গের উপর নির্ভর করে কখনও কখনও প্রতিনিধিরা এই সমস্যাগুলি সমাধান করে।
যদি আপনাকে স্ট্যাটিক পদ্ধতিটি কোনও ধরণের কারখানা বা সূচনা পদ্ধতি হিসাবে কল করতে হয়, তবে আপনি কোনও প্রতিনিধি ঘোষণা করতে পারেন এবং স্থির পদ্ধতিটিকে প্রাসঙ্গিক জেনেরিক কারখানায় বা যা কিছু প্রয়োজন তার "এই স্ট্যাটিক পদ্ধতিযুক্ত জেনেরিক শ্রেণি" সরবরাহ করতে পারেন।
উদাহরণ স্বরূপ:
class Factory<TProduct> where TProduct : new()
{
public delegate void ProductInitializationMethod(TProduct newProduct);
private ProductInitializationMethod m_ProductInitializationMethod;
public Factory(ProductInitializationMethod p_ProductInitializationMethod)
{
m_ProductInitializationMethod = p_ProductInitializationMethod;
}
public TProduct CreateProduct()
{
var prod = new TProduct();
m_ProductInitializationMethod(prod);
return prod;
}
}
class ProductA
{
public static void InitializeProduct(ProductA newProduct)
{
// .. Do something with a new ProductA
}
}
class ProductB
{
public static void InitializeProduct(ProductB newProduct)
{
// .. Do something with a new ProductA
}
}
class GenericAndDelegateTest
{
public static void Main()
{
var factoryA = new Factory<ProductA>(ProductA.InitializeProduct);
var factoryB = new Factory<ProductB>(ProductB.InitializeProduct);
ProductA prodA = factoryA.CreateProduct();
ProductB prodB = factoryB.CreateProduct();
}
}
দুর্ভাগ্যক্রমে আপনি প্রয়োগ করতে পারবেন না যে শ্রেণীর সঠিক পদ্ধতি রয়েছে তবে আপনি কমপক্ষে সময়-প্রয়োগ-সংকলন করতে পারেন যে ফলিত কারখানার পদ্ধতিতে তার প্রত্যাশিত সমস্ত কিছুই থাকে (যেমন সঠিক স্বাক্ষর সহ একটি সূচনা পদ্ধতি)। এটি রানটাইনের প্রতিচ্ছবি ব্যতিক্রমের চেয়ে ভাল।
এই পদ্ধতির কিছু উপকারিতাও রয়েছে, যেমন আপনি আর ডি পদ্ধতিগুলি পুনরায় ব্যবহার করতে পারেন, সেগুলি উদাহরণ পদ্ধতি ইত্যাদি হতে পারে etc.