Điều này bắt đầu như là một cách để tìm C++/CLI và Managed C++ assembly để tất cả các lớp bên trong chúng có thể được kiểm tra để đảm bảo tất cả các phương thức kế thừa đã được thực hiện lại. Tôi muốn thêm điều này như là một quá trình xây dựng bước để đảm bảo rằng nó không bao giờ xảy ra một lần nữa.Có thể xác định được ngôn ngữ nào mà .NET Assembly đã viết trên thực tế không?
Suy nghĩ về vấn đề này cũng khiến tôi hơi tò mò vì sẽ rất thú vị khi có thể xác định bất kỳ ngôn ngữ .NET nào được sử dụng. Bởi vì điều này, tôi đã đi xa hơn một chút và so sánh các hội đồng từ tất cả các ngôn ngữ .NET. Cho đến nay đây là những gì tôi đã tìm thấy thông qua một chương trình nhỏ mà tôi đã viết so sánh các loại và thuộc tính dữ liệu từ bất kỳ tập hợp hội NET thông qua phản ánh:
- C# - Có AssemblyConfigurationAttribute, Có GuidAttribute
- VB - Có nhiều loại "My" bổ sung (ví dụ: MyApplication, MySettings), Has GuidAttibute
- F # - Có một FSharpInterfaceDataVersionAttribute cũng chỉ định phiên bản trình biên dịch được sử dụng.
- C++ (tất cả trừ/clr: an toàn) - Có nhiều loại bổ sung (FrameInfo, type_info)
- C++/clr: safe - Dường như không có tính năng phản chiếu độc đáo.
Nó có thể là hợp lý để phân tích theo thứ tự này:
- Đó là F # nếu nó có FSharpInterfaceDataVersionAttribute
- Đó là C++ nếu có bất kỳ trong tập khổng lồ các loại phụ tôi được tìm thấy.
- Đó là VB nếu có loại "My *".
- Đó là C# nếu nó có AssemblyConfigurationAttribute hoặc GuidAttribute
- Đó là khả năng là C++/clr: Safe
Tuy nhiên, vì đây là một hack kinh khủng, tôi muốn đăng ký tại đây để đảm bảo rằng có wasn không có tùy chọn khác.
Câu hỏi thú vị, nhưng tại sao lại sử dụng chữ Latinh? Nhìn lại sẽ dễ hiểu hơn. Không phải tất cả mọi người ở đây đều là một người nói tiếng Anh bản địa. – danio
@danio: Bởi vì tiếng Latin thật tuyệt vời? – bcat