2016-02-25 53 views
5

Mono.Cecil'i Regex.CompileToAssembly() tarafından oluşturulan bir derlemeyi okumak için kullanıyorum. Türler boyunca yinelendiğim zaman, <Module> adlı kök ad alanında bir tür var. Türde taban tipi yoktur. Bu tip nedir? Bu, bazı Mono.Cecil artifact veya aslında .NET derlemelerinin gerçek bir parçası olan bir şey mi? Hangi rol oynar?"<Module>" türü nedir?

cevap

7

<Module> tipi, CLI modeline uymayan bildirimler için bir yer tutucudur. Normal olarak yalnızca karma modda, hem yönetilen bir dilde yazılan kodu hem de C veya C++ gibi yönetilmeyen bir diziyi içeren derlemeler ile ilgilidir. Saf yönetilen meclisler için boş.

Bu diller, serbest işlevleri ve genel değişkenleri destekler. CLR doğrudan desteklemez, yöntemler ve değişkenler her zaman bir türün üyesi olmalıdır. Böylece, meta veri üreteci basit bir numara kullanır, bu tür işlevlerin ve değişkenlerin evi olmak için sahte bir tip oluşturur. Bu sahte türün adı <Module>'dur. Üyeleri gizlemek için her zaman dahili erişilebilirlik vardır. Bu türlerden yalnızca bir tanesi vardır, RID her zaman 1'dir.

CLR kaynak kodu, "Global Class" olarak adlandırır.