Linq and Anonymous Types

.NET obfuscator and automated error reporting

Moderators: Luke Jefferson, Alex.Davies, melvyn.harbour

Linq and Anonymous Types

Postby gwerner » Fri Aug 06, 2010 4:30 pm

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:

Code: Select all
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
gwerner
 
Posts: 2
Joined: Wed May 27, 2009 8:23 pm

Postby nick.maidment » Mon Aug 09, 2010 12:43 pm

Have you considered using custom attributes: http://www.red-gate.com/supportcenter/C ... 032253.htm ?

I think the DoNotObfuscateAttribute and DoNotObfuscateTypeAttribute might be helpful for you?
nick.maidment
 
Posts: 74
Joined: Fri Jan 29, 2010 1:55 pm

Postby gwerner » Mon Aug 09, 2010 3:31 pm

Unfortunately, I don't think custom attributes can be added to local variables within a function. (correct me if I'm wrong). And as I mentioned above, making specialized class definitions is out of the question.

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.
Grady Werner
SmarterTools Inc
gwerner
 
Posts: 2
Joined: Wed May 27, 2009 8:23 pm

Postby nick.maidment » Thu Aug 19, 2010 1:20 pm

I'll cetainly suggest it to development and see what they say.
nick.maidment
 
Posts: 74
Joined: Fri Jan 29, 2010 1:55 pm

Postby melvyn.harbour » Fri Aug 20, 2010 11:39 am

We've already logged this issue in our issue tracking system as SA-111. I'll let you know when we have a timeframe for fixing it.

Mel
Melvyn Harbour
Project Manager
.NET Tools Division
melvyn.harbour
 
Posts: 27
Joined: Mon Mar 15, 2010 3:27 pm

Postby robertvh » Thu Dec 02, 2010 7:39 pm

Any news on this issue?

Our software stops working after obfuscating on the following line:
Code: Select all
PriceListInfo defaultPriceList = this.globe.Data.PriceLists.Where(pl => pl.Type == 'S' && pl.IsMain).FirstOrDefault();


I guess this might be caused by this issue
robertvh
 
Posts: 1
Joined: Thu Dec 02, 2010 4:49 pm


Return to SmartAssembly 5

Who is online

Users browsing this forum: No registered users and 0 guests