Trình khởi tạo mô-đun là một tính năng của CLR không có sẵn trực tiếp trong C# hoặc VB.NET. Chúng là các phương thức tĩnh toàn cầu có tên là .cctor
được bảo đảm để chạy trước bất kỳ mã nào khác (kiểu khởi tạo, các hàm tạo tĩnh) trong một assembly được thực hiện. Gần đây tôi muốn sử dụng này trong một dự án và sử dụng hacked together my own solution (console program/msbuild task) Mono.Cecil, nhưng tôi đã tự hỏi:Trình khởi tạo mô-đun trong C#
Có cách nào để lừa trình biên dịch C# vào phát intializers module? Bất kỳ thuộc tính nào (ví dụ: CompilerGenerated, SpecialName) hoặc mẹo nhỏ khác có thể được sử dụng?
C#/VB.NET có tự phát ra các trình khởi tạo này cho một số mục đích không? Từ những gì tôi đã nhìn thấy chúng được sử dụng bởi quản lý C + + cho một số mục đích interop, nhưng tôi không thể tìm thấy bất kỳ tài liệu tham khảo cho họ đang được sử dụng cho các mục đích khác. Bất kỳ ý tưởng?
Bạn có thể sử dụng một kỹ thuật tương tự cho [Thư viện Melody không bị giới hạn của Jon Skeet] (http://code.google.com/p/unconstrained-melody/), mà anh ta sử dụng để tránh xung quanh thực tế là bạn không thể sử dụng enum ràng buộc trong C#. Giải pháp của ông là sử dụng các thuộc tính giữ chỗ để thúc đẩy một chương trình hậu xử lý (được viết bằng C#) để điều khiển ilasm.exe viết lại IL để thực hiện chính xác những thứ không thể được thực hiện trong C#. –
Thảo luận liên quan: http://blogs.msdn.com/b/microsoft_press/archive/2010/02/03/jeffrey-richter-excerpt-2-from-clr-via-c-third-edition.aspx – user423430