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);
अद्यतन:
यहाँ मेरी कोड से एक टुकड़ा है:
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 स्ट्रिंग है - एक संपत्ति इन्स का नाम विचार "StavkaDokumenta" कक्षा। पीडी.एक्सप्रेस स्ट्रिंग अभिव्यक्ति है जिसे पोल्जे के प्रकार का मूल्यांकन करना चाहिए। स्टेका स्काकाडोक्यूमेंटा का एक उदाहरण है।
यदि आप अंतहीन ifs का उपयोग कर रहे हैं, तो शायद आपके वर्तमान दृष्टिकोण के बारे में कुछ ऐसा हो सकता है जिसे बेहतर किया जा सकता है? मैं कम से कम इसे मानता हूँ। – Botz3000
यदि आप श्रृंखला को हल करने का प्रयास कर रहे हैं तो क्या आप अंतहीन का उदाहरण प्रदान कर सकते हैं? – GregC
यदि आप अंतहीन 'xxx कुछ टाइप टाइप' का उपयोग कर रहे हैं, तो शायद आपके डिज़ाइन में कुछ गड़बड़ है। –