2009-10-02 5 views
11

मुझे एक ऐसा प्रकार बनाने की ज़रूरत है जिसमें एक ही नाम के साथ दो गुण हों, और केवल रिटर्न प्रकार पर भिन्न हो। प्रतिबिंब के माध्यम से इस प्रकार को गतिशील रूप से उत्सर्जित करना पूरी तरह से स्वीकार्य है।मैं एक .NET प्रकार को दो गुणों के साथ कैसे उत्सर्जित कर सकता हूं जो केवल रिटर्न प्रकार पर अधिभारित होते हैं?

कुछ इस तरह:

public TypeA Prop { get; } 
public TypeB Prop { get; } 

मैं समझता हूँ कि मैं C# या VB.NET या अन्य नेट भाषाओं के बहुत से इस संपत्ति का उपभोग नहीं कर सकते हैं।

मुझे बताए गए उत्तरों को रोकने के लिए कि मैं ऐसा क्यों नहीं करना चाहता, मुझे बताएं कि मुझे इसकी आवश्यकता क्यों है: मुझे इसे एक बग पुन: पेश करने की आवश्यकता है।

अधिक विशेष रूप से, मेरे पास AutoFixture में एक बग है जहां एक प्रकार के Moq कुछ मामलों में अपवाद फेंकने का कारण बनेंगे। समस्या यह है कि Moq द्वारा उत्सर्जित प्रकार में दो गुण होते हैं जिन्हें 'मॉक' नाम दिया जाता है जो केवल रिटर्न प्रकार पर भिन्न होता है।

मैं इस परिदृश्य को यूनिट परीक्षण में पुन: पेश करना चाहता हूं, लेकिन मैं सिर्फ उसी कारण से मोक पर निर्भरता नहीं लेना चाहता, इसलिए मैं परीक्षण सूट में आंतरिक रूप से व्यवहार को पुन: पेश करना चाहता हूं।

+6

+1 System.String क्या अन्यथा होगा के लिए वैध कारण देने के लिए "पैर, उद्देश्य, श oot "सामग्री का प्रकार :) –

उत्तर

14

आप एक ही नाम है कि प्रकार के आधार पर ही अलग से 2 प्रॉपर्टी हो सकती है, और आप कर सकते हैं कि गतिशील प्रकार उत्सर्जन के बिना:

class Foo 
{ 
    public string X 
    { 
     get { return "Hello world"; } 
    } 
} 

class Bar : Foo 
{ 
    public new int X 
    { 
     get { return 42; } 
    } 
} 

void Main() 
{ 
    foreach(PropertyInfo prop in typeof(Bar).GetProperties()) 
    { 
     Console.WriteLine("{0} : {1}", prop.Name, prop.PropertyType); 
    } 
} 

इस कोड के उत्पादन में हो जाएगा:

एक्स: System.Int32
एक्स:

+0

यह वास्तव में था कि मुझे बग को पुन: पेश करने के लिए क्या आवश्यक था। बहुत बहुत धन्यवाद :) –

संबंधित मुद्दे

 संबंधित मुद्दे