How do I support generic expression in C# 2.0 -


i have code written c# 4.0+, need compile c# 2.0 compiler.

the following snippets don't how write, in order support same functionality:

public sealed class myclass {     private static readonly genericstaticmethod _deserializehelper = new genericstaticmethod(() => deserializehelper<object>(null, null, null));     //... }  public sealed class genericstaticmethod {     private readonly methodinfo methodtocall;      public genericstaticmethod(expression<action> methodcall)     {         var callexpression = (methodcallexpression)methodcall.body;         methodtocall = callexpression.method.getgenericmethoddefinition();     }      public object invoke(type[] genericarguments, params object[] arguments)     {         try         {             return methodtocall                 .makegenericmethod(genericarguments)                 .invoke(null, arguments);         }         catch (targetinvocationexception ex)         {             throw ex.unwrap();         }     } } 

the expression cannot written way is:

() => deserializehelper<object>(null, null, null) 

a straight substitution delegate doesn't work without modifications of genericstaticmethod():

delegate() { return deserializehelper<object>(null, null, null); } 

rewriting genericstaticmethod acceptable, don't know how to.

you plain cannot use expression trees in case, compiler support in later versions. don't need to, if reason use methodinfo in strongly-typed fashion.

public sealed class myclass {     private static readonly genericstaticmethod _deserializehelper = new genericstaticmethod(new action<object, object, object>(deserializehelper<object>)); }  public sealed class genericstaticmethod {     private readonly methodinfo methodtocall;      public genericstaticmethod(delegate methodcall)     {         methodtocall = methodcall.method.getgenericmethoddefinition();     } } 

you'll need change action<object, object, object> delegate type matches signature of deserializehelper<object>.


Comments

Popular posts from this blog

python - Subclassed QStyledItemDelegate ignores Stylesheet -

java - HttpClient 3.1 Connection pooling vs HttpClient 4.3.2 -

SQL: Divide the sum of values in one table with the count of rows in another -