मैं एक आईएल स्थिर विश्लेषण उपकरण लिख रहा हूँ, और मैं एक कठिन समय को नियंत्रित करने के लिए कैसे सामान्य प्रकार पैरामीटर संदर्भित नियमों को समझने आ रही हैं:आईएल जेनेरिक - कब के लिए नियम मौजूद हैं! टी का उपयोग बनाम बनाम 0 है?
(IList<T>
interface से) इस आईएल ले:
.property instance !T Item(
int32 index
)
{
.get instance !0 System.Collections.Generic.IList`1::get_Item(int32)
.set instance void System.Collections.Generic.IList`1::set_Item(int32, !0)
}
!T
के बजाय वहां क्यों है? मुझे लगता है कि वे वीएम के बराबर हैं, जब आप नाम रखने की गारंटी रखते हैं तो यह स्थितित्मक संदर्भों का उपयोग करने के लिए अजीब लगता है।
अद्यतन: एक KeyedCollection.ctor से अतिरिक्त मामले,:
IL_0037: newobj instance void class System.Collections.Generic.Dictionary`2<!TKey,!TItem>::'.ctor'(class System.Collections.Generic.IEqualityComparer`1<!0>)
IL_003c: stfld class System.Collections.Generic.Dictionary`2<!0,!1> class System.Collections.ObjectModel.KeyedCollection`2<!0,!1>::dictionary
मुझे यह नहीं दिखाई देता है। क्या आपको यकीन है कि यह आपके डिस्सेबलर में सिर्फ एक बग नहीं है? –
एचएम, यह निश्चित रूप से कुछ असंतुलित है (इस मामले में मोनोडिस) उत्पन्न हो रहा है। Mono.Cecil (जो कि मेटाडाटा-वार द्वारा अधिक से अधिक प्रतीत होता है) दिखाता है, उदाहरण के लिए: stfld System.Collections.Generic.Dictionary'2 सिस्टम। चयन। ऑब्जेक्टमोडेल.केड कोलेक्शन'2 :: शब्दकोश –
toshok
@ हंसपैसेंट आपको आईएल दिखाने के लिए आप क्या उपयोग कर रहे हैं? – casperOne