ho qualcosa di simile a questo:Restituzione di espressione <> utilizzando varie proprietà della classe
public Expression<Func<Message, bool>> FilterData()
{
switch (this.operatorEnum)
{
case FilterParameterOperatorEnum.EqualTo:
return message => !string.IsNullOrEmpty(message.Body) &&
message.Body
.Equals(this.value, StringComparison.InvariantCultureIgnoreCase);
case FilterParameterOperatorEnum.NotEqualTo:
return message => !string.IsNullOrEmpty(message.Body) &&
!message.Body
.Equals(this.value, StringComparison.InvariantCultureIgnoreCase);
case FilterParameterOperatorEnum.Contains:
return message =>
!string.IsNullOrEmpty(message.Body) &&
message.Body.IndexOf(this.value,
StringComparison.InvariantCultureIgnoreCase) >= 0;
case FilterParameterOperatorEnum.DoesNotContain:
return message =>
!string.IsNullOrEmpty(message.Body) &&
message.Body.IndexOf(this.value,
StringComparison.InvariantCultureIgnoreCase) == -1;
}
}
Come si può vedere che questo è fatto su Message.Body
io ora cosa fare la stessa cosa su altre proprietà di stringa su la classe Message
e non voglio duplicare tutto quel codice.
C'è un modo per farlo passando in qualche modo nella proprietà?
E cosa fa il corpo di FilterData assomiglia? – Jon
Per fare ciò correttamente, dopo aver controllato che 'prop' non è' null', dovresti anche assicurarti che 'prop.CanRead' sia' true'. –