मैं विशिष्टता ऑब्जेक्ट के आधार पर गतिशील रूप से अभिव्यक्तियों का निर्माण करने की कोशिश कर रहा हूं।एक अभिव्यक्ति के शरीर में पैरामीटर नाम को बदलना
private Expression<Func<T, bool>> expression;
public ExpressionHelper()
{
expression = (Expression<Func<T, bool>>)(a => true);
}
और फिर कुछ आसान तरीके इस प्रकार:
मैं एक ExpressionHelper वर्ग है कि इतने की तरह एक निजी अभिव्यक्ति बना लिया है
public void And(Expression<Func<T,bool>> exp);
मैं के शरीर के साथ संघर्ष कर रहा हूँ और विधि। मैं मूल रूप से exp
से शरीर को पिसाना चाहता हूं, expression
में उन सभी पैरामीटर को प्रतिस्थापित करें और फिर expression
शरीर के अंत में और इसके अलावा इसे भी संलग्न करें।
मैं इस किया है:
var newBody = Expression.And(expression.Body,exp.Body);
expression = expression.Update(newBody, expression.Parameters);
लेकिन है कि इस तरह की तलाश में मेरी अभिव्यक्ति के साथ समाप्त होता है:
{ a => e.IsActive && e.IsManaged }
वहाँ यह करने के लिए एक सरल तरीका है? या मैं उन ई को कैसे निकाल सकता हूं और उन्हें किसी के साथ बदल सकता हूं?
Dammit, बस आह्वान स्मृति में काम करने और एफई पर परीक्षण किया गया था जब यह हुआ मिला है। धन्यवाद। –
@robert आईआईआरसी Invoke ईएफ पर काम नहीं करता है, तो आपको दूसरे संस्करण –
का उपयोग करने की आवश्यकता होगी आपका दृष्टिकोण काम करता है लेकिन अब मेरे पास मेरे कोडबेस में आपका अद्भुत जटिल और अनचाहे रीवाइटर है। :(यह देखकर कि यह कितना स्मार्ट दिखता है, मैं इसे तब तक रखने जा रहा हूं जब तक मैं इसे समझ नहीं पाता! –