Func<>
型の引数を動的に設定する方法はありませんので、無限のif
文を使用する必要はありませんか?動的にFunc <>型を設定する
Type t = Type.GetType("System.Decimal");
Func<t> foo = new Func<t>(some_function);
の代わりに::
Func<Decimal> foo = new Func<Decimal>(some_function);
UPDATE:のような
何か
は、ここに私のコードからの抜粋です:
Type t = typeof(StavkaDokumenta).GetProperty(pd.Polje).PropertyType;
ParameterExpression pe = Expression.Parameter(typeof(StavkaDokumenta), "stavka");
Expression expr = Expressions.ResolveCompleteExpression(pe, pd.Expression);
Expression final = Expression.Convert(expr, t);
if (t == typeof(decimal))
{
var lambda = Expression.Lambda<Func<StavkaDokumenta, decimal>>(final, pe);
o = lambda.Compile().Invoke(stavka);
}
if (t == typeof(decimal?))
{
var lambda = Expression.Lambda<Func<StavkaDokumenta, decimal?>>(final, pe);
o = lambda.Compile().Invoke(stavka);
}
else if (t == typeof(int))
{
var lambda = Expression.Lambda<Func<StavkaDokumenta, int>>(final, pe);
o = lambda.Compile().Invoke(stavka);
}
else if (t == typeof(int?))
{
var lambda = Expression.Lambda<Func<StavkaDokumenta, int?>>(final, pe);
o = lambda.Compile().Invoke(stavka);
}
else if (t == typeof(string))
{
var lambda = Expression.Lambda<Func<string>>(final, null);
o = lambda.Compile().Invoke();
}
pd.Poljeは文字列です - プロパティインの名前ide "StavkaDokumenta"クラス。 pd.Expressionは、Poljeの型に評価される文字列式です。 stavkaはStavkaDokumentaのインスタンスです。
あなたが無限のifを使用しているなら、あなたの現在のアプローチについて改善の余地がありますか?私は少なくともそれを検討するだろう。 – Botz3000
あなたが解決しようとしている無限のifチェーンの例を教えてください。 – GregC
あなたが無限の 'xxx is SomeType'を使用しているなら、おそらくあなたのデザインに何か間違いがあります。 –