2011-03-29 4 views
0

je dois créer le code VB.Net suivant par un C# CodeConditionStatementCodeConditionStatement et Nullable.Equals

If Not Nullable.Equals(field.Name, Value) Then 
    ... 
End If 

Ce que je alredy essayé était

var property = new CodeMemberProperty(); 

CodeExpression condition = new CodeMethodInvokeExpression(System.Nullable,"Equals", new CodeExpression(){ 
       new CodeVariableReferenceExpression(field.Name), 
       new CodePropertySetValueReferenceExpression() 
      }); 

property.SetStatements.Add(new CodeConditionStatement(condition, null)); 

mais System.Nullable ne peut pas être converti en une expression de code.

+0

Vous ne pouvez pas utiliser 'System.Nullable (Of T) .Equals' de la façon dont vous essayez: le code que vous voulez générer est invalide - pas étonnant que le générateur refuse de générer ce code. –

+0

C'est pourquoi je cherche un moyen de générer la fonction Nullable.Equals à travers un CodeConditionStatement qui fonctionne: D –

+0

Cela ne fonctionnera pas non plus. Le code que vous voulez appeler n'existe tout simplement pas. 'Nullable' n'est pas une classe complète, elle doit être' Nullable (Of SomeType) '. –

Répondre

0

Donc, cela semble fonctionner:

property.SetStatements.Add(new CodeConditionStatement(
       new CodeSnippetExpression(String.Format("Not Nullable.Equals({0}, value)", field.Name)), 
       null)); 

assez horrible mais travailler .....

Si quelqu'un a une meilleure idée: D