私が取り組んでいるものに少し問題があります。最初に、ビジネス オブジェクトと正常に機能しているデータ アクセス レイヤーの間に位置するジェネリック レイヤーを作成しました。その後、最近、エクスプレッション ツリーと呼ばれるものについて読みました。これは明らかに効率的であり、Activator.CreateInstance() をエクスプレッションに交換し、ジェネリック レイヤーが指数関数的に改善されたことが証明されています。
私はまだ領域全体(式)についていくつか読んでいますが、汎用的にしようとするコードに出くわしました。現時点では、string、int、decimal などの具体的な型を渡す必要があります。私はこのビットを一般的なものにしました。いくつか試してみましたが失敗しました。ジェネリックが必要なビットはアクションです。プロパティのタイプをジェネリックに渡すことができるようにしたい文字列を渡したくありません。つまり、typeof(T).GetProperty("Forename").PropertyTypeです。これは可能ですか?ちょっとしたフーバーであるswitch文をやろうと思っていました。
前もってありがとう、オナム。
public class TTT<T> where T : new()
{
public void Do(object t)
{
MethodInfo info = typeof(T).GetProperty("Forename").GetSetMethod();
ParameterExpression param = Expression.Parameter(typeof(string), "val");
MethodCallExpression call = Expression.Call(Expression.Constant(t), info,
new ParameterExpression[] { param });
Action<string> action = Expression.Lambda<Action<string>>(call, param).Compile();
action("hi");
}
}