データ テーブル アイテム (System.Data.DataRow) から動的にビジネス オブジェクトを作成するデータ アクセス コードのコンテキストで、以下のコードを使用しています。データ行から取得したバイト列をビジネス オブジェクトの整数フィールドに割り当てられるようにしたいと考えています。
using System;
using System.Linq.Expressions;
namespace TestConsole {
class Program {
static void Main(string[] args) {
var targetExp = Expression.Parameter(typeof(object), "target");
var valueExp = Expression.Parameter(typeof(object), "value");
var propertyExpression = Expression.Property(Expression.Convert(targetExp, typeof(SomeClass)), "SomeInt");
var assignmentExpression = Expression.Assign(propertyExpression, Expression.Convert(valueExp, typeof(SomeClass).GetProperty("SomeInt").PropertyType));
var compliedExpression = Expression.Lambda<Action<object, object>>(assignmentExpression, targetExp, valueExp).Compile();
var obj = new SomeClass();
byte ten = 10;
compliedExpression.Invoke(obj, 10);
compliedExpression.Invoke(obj, (int)10); //this works and i want to do this cast using expression trees, any idea?
compliedExpression.Invoke(obj, ten); //Specified cast is not valid.
Console.WriteLine(obj.SomeInt);
Console.ReadKey();
}
}
class SomeClass {
public int SomeInt { get; set; }
}
}