मान लें निम्न कोड के लिए एक पैरामीटर के रूप में एक सामान्य वर्ग पारित करने के लिए (कृपया अंतिम कक्षा में कोड टिप्पणी में मेरे सवाल पढ़ें):कैसे एक गैर सामान्य वर्ग निर्माता
//This is my Generic Class
public class ClientRequestInfo<K, V>
{
public string Id { get; set; }
private Dictionary<K, V> parameters;
public ClientRequestInfo()
{
parameters = new Dictionary<K, V>();
}
public void Add(K key, V value)
{
parameters.Add(key, value);
}
}
public class ProcessParameters()
{
private void CreateRequestAlpha()
{
ClientRequestInfo<int, string> info = new ClientRequestInfo<int, string>();
info.Add(1, "Hello");
SynchRequest s = new SynchRequest(info);
s.Execute();
}
private void CreateRequestBeta()
{
ClientRequestInfo<int, bool> info = new ClientRequestInfo<int, bool>();
info.Add(1, true);
SynchRequest s = new SynchRequest(info);
s.Execute();
}
}
public class SynchRequest
{
//What type should I put here?
//I could declare the class as SynchRequest<K, V> but I don't want
//To make this class generic.
private ClientRequestInfo<????,?????> info;
private SynchRequest(ClientRequestInfo<?????,?????> requestInfo)
{
//Is this possible?
this.info = requestInfo;
}
public void Execute()
{}
}
आप एक सामान्य SynchRequest का उपयोग क्यों नहीं करना चाहते हैं? – AnthonyWJones
क्या आप जानकारी सदस्य के साथ निष्पादन() में क्या करेंगे, इसके बारे में बात कर सकते हैं? यह एक कार्यात्मक समकक्ष उत्तर के लिए आधार प्रदान कर सकता है। – joshperry
क्योंकि क्लास SynchRequest को परियोजना के अन्य वर्गों द्वारा बुलाया जाता है और SynchRequest का उद्देश्य सेवा चलाने और क्लाइंट जानकारी के बारे में किसी भी प्रकार का प्रदान नहीं करना है। इसके अलावा ऐसे वर्ग भी हैं जो SynchRequest का उपयोग करते हैं और किसी क्लाइंट जानकारी को निर्दिष्ट या आवश्यकता नहीं देते हैं। तो इस वर्ग को सामान्य बनाने के लिए अच्छा दृष्टिकोण नहीं है। (SynchRequest में एक और खाली कन्स्ट्रक्टर है) – Ioannis