How can we help you today? How can we help you today?
haleyjason
Here are some answers to you numbered questions: 1. [CompilerGenerated] and [DebuggerHidden] attributes are typically on things that a either generated (and you never see in Visual Studio) or in generated code (you can sometimes see the code by in other partial classes like with Forms). The easiest way for C# to make sure you don't use these compiler generated members and objects is to name them in some illegal syntax for C# (though the names are still legal in IL - the languages have different syntax naming rules). So that is why you get those generated names that won't compile. Problem is - you won't have the information in your assembly to reverse back to things like LINQ expressions that will cause some of these objects to be created. For simple things like automatic properties (IE. public string Name { get; set; } ) you can figure those out (the underlying field name will have a generated name). Short story is: C# provides a lot of syntatic sugar for you ... but under the coveres the compiler and visual studio work together to hide complicated generated stuff needed to make that work. 2. Local variables names are typically not stored in IL. If you have the pdb, you might be able to get them back. 3. Label_xxx: statements are examples of how the final compiled IL is not the same as the higher level language you wrote it in. Conditions and loops translate into jump or goto statements ... things you don't worry about in C#. Again this is part of the work that the C# compiler takes care of for you. All of those items do make it harder to reverse IL into C#. #1 being the hardest (especially with LINQ and things like the yield statement). / comments
Here are some answers to you numbered questions: 1. [CompilerGenerated] and [DebuggerHidden] attributes are typically on things that a either generated (and you never see in Visual Studio) or in g...
0 votes