2015-11-05 50 views
6

是否有任何方法可以查看.NET框架中外部實現的方法的源代碼?.NET Framework外部方法源代碼

我知道Reference Source這是一個很好的資源,但.NET框架中的很多核心類是外部實現的(我假設用C++?)。

比如我在的階級String的內部工作很感興趣,但方法幾乎一半與extern關鍵字包括this[int index]出現的字符串中實際持有的文字聲明。

從哪裏可以找到String.this[int index]String.nativeCompareOrdinalEx(String strA, int indexA, String strB, int indexB, int count)和其他外部實現方法的源代碼?

另外,是否有一個特別的原因,爲什麼如此多的核心框架類是外部實現的?它是否可以利用現有的代碼或出於性能原因或其他原因?

+2

你必須做一些挖掘在coreclr回購。例如,我相信'String.nativeCompareOrdinalEx'它被映射到'COMString :: CompareOrdinalEx' found [here](https://github.com/dotnet/coreclr/blob/bc146608854d1db9cdbcc0b08029a87754e12b49/src/classlibnative/bcltype/stringnative.cpp )。看看[外部調用列表](https://github.com/dotnet/coreclr/blob/419629fdc3e51c6c28467bf1b57b7fcd80dc8360/src/vm/ecalllist.h)並嘗試找到函數映射。 –

+1

@mikez外部呼叫列表非常有幫助,正是我所期待的。任何想法'String.this [int index]'的映射? –

+0

@JacobSchneider它可能是'FCIntrinsic(「get_Chars」,COMString :: GetCharAt,CORINFO_INTRINSIC_StringGetChar)''但這只是一個猜測。 –

回答

4

對於新社區,版本,你可以在GitHub上挖,這就是我發現的小數減法的實現(或者是我被SO其實指向的)

CoreCLR/src

你有羅斯林代碼有太多:

Roslyn at Github

+2

使用CoreCLR結合mikez指出的[mapping](https://github.com/dotnet/coreclr/blob/bc146608854d1db9cdbcc0b08029a87754e12b49/src/classlibnative/bcltype/stringnative.cpp)給出了準確的源代碼。 –

相關問題