Bellow कोड रहा है के संस्करण सरल है:जेनेरिक वर्ग कारखाने समस्या
public interface IControl<T>
{
T Value { get; }
}
public class BoolControl : IControl<bool>
{
public bool Value
{
get { return true; }
}
}
public class StringControl : IControl<string>
{
public string Value
{
get { return ""; }
}
}
public class ControlFactory
{
public IControl GetControl(string controlType)
{
switch (controlType)
{
case "Bool":
return new BoolControl();
case "String":
return new StringControl();
}
return null;
}
}
समस्या ControlFactory वर्ग के GetControl विधि में है। क्योंकि यह आईसींट्रोल लौटाता है और मेरे पास केवल आईसीओन्ट्रोल < टी> है जो एक सामान्य इंटरफ़ेस है। मैं टी प्रदान नहीं कर सकता क्योंकि बूल मामले में यह बूल जा रहा है और स्ट्रिंग मामले में यह स्ट्रिंग होने जा रहा है।
कोई विचार मुझे इसे काम करने के लिए क्या करना है?
@ वादीम - मैं दृढ़ता से आपको डैनियल के समाधान का उपयोग करने की सलाह दूंगा, जहां वह स्ट्रिंग का उपयोग करने के बजाय प्रकार की तुलना कर रहा है। प्रकार के नाम का उपयोग करना अधिक त्रुटि प्रवण है। –
@ जोन बी: आप सही हैं; प्रकारों की तुलना करना अधिक मजबूत कोड प्रदान करेगा। मैंने बस काम करने के लिए वादिम के मूल कोड को अद्यतन किया। डैनियल का दृष्टिकोण जाने का बेहतर तरीका है। –