2012-07-20 18 views
6

मुझे एक बहुत ही अजीब समस्या है।"इंटरफ़ेस में गैर सार, गैर-.cctor-method" प्राप्त करने का कारण क्या है?

public interface IKreator2 
{ 
    string Name { get; set; } 
    string Description { get; set; } 

    INotifyPropertyChanged Settings { get; set; } 

    InfiniRenderJob Job { get; set; } 
    UserControl UI { get; set; } 

    void Init(); 
    //void OnClose(); 
} 

अगर मैं अपने WPF में इस dll से लिंक एप्लिकेशन लोड पर डीबगर दुर्घटनाओं: मैं एक अंतरफलक एक dll में परिभाषित के रूप में निम्नानुसार है (आंतरिक त्रुटि: डीबगर में बिना क्रिया के अपवाद :: HandleIPCEvent, आईडी = 0x246) । मैं के साथ "डिबग अप्रबंधित कोड" एप्लिकेशन को डिबग अगर मैं निम्न त्रुटियां मिलती है:

  • प्रथम मौका अपवाद 0x76977945 InfiniRender.Host.exe में (KernelBase.dll) पर: माइक्रोसॉफ्ट C++ अपवाद: स्मृति पर EETypeLoadException स्थान 0x0029c5b8।
  • में 0x76977945 (KernelBase.dll) पर पहला मौका अपवाद InfiniRender.Host.exe: माइक्रोसॉफ्ट सी ++ अपवाद: मेमोरी स्थान 0x00000000 पर [रीथ्रो]।
  • ype 'System.TypeLoadException' का एक पहला मौका अपवाद InfiniRender.Host.exe
  • में हुआ प्रकार 'System.TypeLoadException' की एक बिना क्रिया का अपवाद InfiniRender.Host.exe अतिरिक्त जानकारी में आई: Nicht abstrakte Nicht -इंटर Schnittstelle में -क्टर-मेथोड।

क्षण में मेरे पास बिल्कुल कोई संकेत नहीं है कि क्या हो रहा है। इंटरफ़ेस का एक इम्प्लांटेशन भी नहीं है और कोई कक्षा इसका उपयोग नहीं करती है। अगर मैं "इनिट" विधि को टिप्पणी करता हूं, तो सब कुछ अपेक्षित काम करता है। कोई विचार ??

[संपादित करें] यह वह जगह है इंटरफ़ेस init विधि के लिए MSIL:

.method public hidebysig newslot virtual 
     instance void Init() cil managed 
{ 
// Code size  96 (0x60) 
.maxstack 3 
.locals init ([0] class [mscorlib]System.Exception CS$0$0__ex) 
IL_0000: ldsfld  class [NLog]NLog.Logger '<>z__LoggingImplementationDetails'::l14 
IL_0005: callvirt instance bool [NLog]NLog.Logger::get_IsTraceEnabled() 
IL_000a: brfalse.s IL_001b 

IL_000c: ldsfld  class [NLog]NLog.Logger '<>z__LoggingImplementationDetails'::l14 
IL_0011: ldstr  "Entering: InfiniRender.IKreator2.Init()" 
IL_0016: call  instance void [NLog]NLog.Logger::Trace(string) 
.try 
{ 
    IL_001b: newobj  instance void [mscorlib]System.NotSupportedException::.ctor() 
    IL_0020: throw 

    IL_0021: ldsfld  class [NLog]NLog.Logger '<>z__LoggingImplementationDetails'::l14 
    IL_0026: callvirt instance bool [NLog]NLog.Logger::get_IsTraceEnabled() 
    IL_002b: brfalse.s IL_003c 

    IL_002d: ldsfld  class [NLog]NLog.Logger '<>z__LoggingImplementationDetails'::l14 
    IL_0032: ldstr  "Leaving: InfiniRender.IKreator2.Init()" 
    IL_0037: call  instance void [NLog]NLog.Logger::Trace(string) 
    IL_003c: leave.s IL_005f 

} // end .try 
catch [mscorlib]System.Exception 
{ 
    IL_003e: ldsfld  class [NLog]NLog.Logger '<>z__LoggingImplementationDetails'::l14 
    IL_0043: callvirt instance bool [NLog]NLog.Logger::get_IsWarnEnabled() 
    IL_0048: brfalse.s IL_005d 

    IL_004a: stloc.0 
    IL_004b: ldsfld  class [NLog]NLog.Logger '<>z__LoggingImplementationDetails'::l14 
    IL_0050: ldstr  "An exception occurred:\n{0}" 
    IL_0055: ldloc.0 
    IL_0056: call  instance void [NLog]NLog.Logger::Warn(string, 
                  object) 
    IL_005b: rethrow 
    IL_005d: leave.s IL_005f 

} // end handler 
IL_005f: ret 
} // end of method IKreator2::Init 

यह मुझे लगता है कि NLog इसके लिए जिम्मेदार है? आज तक एनएलओजी के साथ कभी भी कोई समस्या नहीं थी ...

+0

उस इंटरफ़ेस के लिए कच्चे आईएल क्या कहता है? – thecoop

+0

क्या आप कहीं रेपो अपलोड कर सकते हैं? – Simon

+0

आप इस इंटरफ़ेस को * उपभोग कैसे कर रहे हैं? आप त्रुटियों को कुछ अप्रबंधित कोड का संकेत देते हैं। साथ ही, 'TypeLoadException' उदाहरण * इंटरफ़ेस * के कारण नहीं होने की संभावना से अधिक हैं, लेकिन कोड * * इंटरफ़ेस लागू करता है। – casperOne

उत्तर

2

तो, यहां अपराधी "पोस्टशर्प। डायग्नोस्टिक्स टूलकिट" था, जिसमें इंटरफेस विधि घोषणाओं में कोड जोड़ा गया जिसके परिणामस्वरूप डीबगर मैहेम था।

मदद करने वालों के लिए धन्यवाद!

+0

मुझे एक ही त्रुटि थी। आपके उत्तर के लिए धन्यवाद। मैंने अपना सुझाव http://support.sharpcrafters.com/discussions/suggestions/5-default-psproj-in-toolkit-should-exclude-interfaces पर पोस्ट किया है –