0
ラムダ式を作成して、プロパティ名、値(文字列として)とプロパティタイプ(Typeとして)を作成したいと考えています。ラムダ式の作成ConstantExpression with string value
問題は行内にあります。Expression.Constant(value1, propertyType);
Fooに渡される値1は文字列です。そして「不明」タイプ
static Expression<Func<T, bool>> LabmdaExpression<T>(string property1, string value1,
Type propertyType)
{
var parameterExpression = Expression.Parameter(typeof(TheObject), "o");
var memberExpression1 = Expression.PropertyOrField(parameterExpression, property1);
//casting?
var valueExpression1 = Expression.Constant(value1, propertyType);
var binaryExpression1 = Expression.GreaterThan(memberExpression1, valueExpression1);
return Expression.Lambda<Func<T, bool>>(binaryExpression1, parameterExpression);
}
なぜExpression.Convertが必要なのでしょうか? – jullin
'Convert.ChangeType()'の戻り値の型は 'object'なので、実際の型にそれをキャストする必要があるからです。コードから直接使用する場合は、同じ操作を行う必要があります。 – svick
あなたは正しいです、私はこれを簡単な例で試しました: 'string x =" 9 "; int xx =(int)Convert.ChangeType(x、typeof(int)); ' – jullin