Gibt es eine Möglichkeit, Func<>
Typ Argumente dynamisch zu setzen, so dass ich nicht unendlich if
Anweisungen verwenden müssen?Dynamisch gesetzt Func <> Typen
Etwas wie:
Type t = Type.GetType("System.Decimal");
Func<t> foo = new Func<t>(some_function);
Statt:
Func<Decimal> foo = new Func<Decimal>(some_function);
UPDATE:
Hier ein Ausschnitt aus meinem Code ist:
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 ist string - Name einer Eigenschaft ins Ide "StavkaDokumenta" -Klasse. pd.Expression ist ein String-Ausdruck, der den Typ von Polje auswerten muss. stavka ist eine Instanz von StavkaDokumenta.
Wenn Sie endlose ifs verwenden, gibt es vielleicht etwas an Ihrem derzeitigen Ansatz, das verbessert werden könnte? Ich würde es mir zumindest überlegen. – Botz3000
Können Sie ein Beispiel für eine endlose if-Kette angeben, die Sie zu lösen versuchen? – GregC
Wenn Sie endless 'xxx ist SomeType' verwenden, ist wahrscheinlich etwas mit Ihrem Design nicht in Ordnung. –