Linq and Anonymous Types
gwerner
Posts: 3
First of all, love SmartAssembly. It was probably the easiest obfuscation method that my team tried.
There is one thing that we find we have to constantly workaround, however. Assume you have a function that looks like this on a web form:
If obfuscation is enabled in SmartAssembly, this web form will not work, because the anonymous type generated in mydata will have its types renamed. When you go to databind, the field names will be different and the program will fail at runtime.
I realize that as a workaround we could create actual types instead of using anonymous types, and as long as we make them protected or public it won't be obfuscated. Unfortunately, however, there are literally hundreds of these types of statements in our code and, in all reality, it defeats the purpose of anonymous types.
Is there a setting or something somewhere to exclude anonymous types from obfuscation?
There is one thing that we find we have to constantly workaround, however. Assume you have a function that looks like this on a web form:
void whatever(someclass inputData) { var mydata = from s in inputData orderby s.Name select new { s.Name, s.Value, Calculated = s.Field+5 }; myDataGrid.DataSource = mydata; myDataGrid.DataBind(); }
If obfuscation is enabled in SmartAssembly, this web form will not work, because the anonymous type generated in mydata will have its types renamed. When you go to databind, the field names will be different and the program will fail at runtime.
I realize that as a workaround we could create actual types instead of using anonymous types, and as long as we make them protected or public it won't be obfuscated. Unfortunately, however, there are literally hundreds of these types of statements in our code and, in all reality, it defeats the purpose of anonymous types.
Is there a setting or something somewhere to exclude anonymous types from obfuscation?
Grady Werner
SmarterTools Inc
SmarterTools Inc
Comments
I think the DoNotObfuscateAttribute and DoNotObfuscateTypeAttribute might be helpful for you?
Also, that would mean finding each instance (hundreds) in a huge codebase, which would be pretty awful.
In my opinion, and variable type that is attached to a datasource property should not be obfuscated because of the way .net data binding works.
SmarterTools Inc
Mel
Our software stops working after obfuscating on the following line:
I guess this might be caused by this issue