मैं हाल ही में पेश आ रही इस problem..I जानते हैं कि यह वर्ष सवाल है, लेकिन सोचा था कि किसी को उपयोगी समाधान मैंने पाया पर मिले (शुद्ध का उपयोग कर 4.0)।
public static dynamic GetRealType { ISomeInterface param } {
return Activator.CreateInstance("dllname", param.GetEntityType);
}
वस्तु बनाना के रूप में एक गतिशील प्रकार क्या यह मेरे लिए हल किया गया था:
public interface ISomeInterface{
String GetEntityType{ get; }
}
public abstract class BaseClass : ISomeInterface{
public String GetEntityType {
get{ return this.GetType().ToString(); }
}
}
public class ChildA : BaseClass { }
public class ChildB : BaseClass { }
क्या मैंने किया था एक कारखाने विधि बनाने था: इस सेटअप मैं था। मैं एक विधि होने से प्रकार निष्कर्ष निकाला:
public void DoSomething<T>(T param){
IList<T> list = somecode...
}
यह मेरे विधि के लिए एक कॉल करते हैं और .net प्रकार यह निष्कर्ष निकाल जाने के लिए अनुमति दी
public void myMethod(ISomeInterface param) {
dynamic value = Factory.GetRealType (param);
DoSomething(value);
}
आशा है कि मैं यह सब भ्रमित नहीं लिया और उसके यह वास्तव में मदद करता है, भी, पाठ की दीवार के लिए खेद है
स्रोत
2012-01-18 00:49:52
IList एक इंटरफेस है, तो आप नए यह नहीं कर सकता। आपको नए प्रकार की आवश्यकता है जो IList जैसे सूची लागू करता है। –