वहां बहुत सारे फ्लुएंट कार्यान्वयन हैं जो लैम्बदास के साथ काम करते हैं जो काफी साफ हैं। मैं अपने दिमाग को इसके चारों ओर लपेटना चाहता हूं ताकि मैं इनमें से कुछ चीजों को बनाना शुरू कर सकूं, लेकिन मुझे अभी तक एक स्पष्टीकरण नहीं मिला है कि मेरा दिमाग समझता है।लैम्ब्डा फनक <> और फ्लुएंट
एक व्यक्ति सत्यापनकर्ता
public class PersonValidator : IValidator<Person>
{
public PersonValidator()
{
AddRule(p => p.FirstName).CannotBeNull().CannotBeBlank();
AddRule(p => p.LastName).CannotBeNull().CannotBeBlank();
}
public List<ValidationResult> Validate(Person p)
{
// pseudo...
apply all rules specified in constructor, return results
}
}
मैं इस इस तरह मेरी सत्यापनकर्ता पर एक विधि का उपयोग कर काम करने का सभी का हिस्सा पाने में कामयाब रहे है ...
public ValidationResult<T,TProp> AddRule<T,TProp>(Func<T,TProp> property)
{
... not sure what to do here. This method gives me the ability to use the lambda
... for specifying which properties i want to validate
}
मैं की इस सरल उदाहरण पर विचार करें फिर विस्तार विधियां बना सकते हैं जो कैनोटबेनुल और कैनोटबेई के उद्देश्यों के लिए IValidator को बढ़ाते हैं।
तो ऐसा लगता है कि मेरे पास पहली छमाही और समस्या का दूसरा आधा है लेकिन मुझे यकीन नहीं है कि उन्हें एक साथ कैसे लाया जाए।
एक सार्थक स्पष्टीकरण की तलाश में है ... मैं इसे "प्राप्त करना" चाहता हूं। :)
अपने उदाहरण मतलब नहीं है, जब आप कर AddRule()। CannotBeNull()। CannotBeBlank() आप कह रहे हैं आप अपनी मान्यता नियमों में उन नियमों जोड़ सकते हैं और बाद में उन्हें लागू करने के लिए करना चाहते हैं? –
हां, ठीक है। मैं किसी भी प्रकार की जंजीर विधियों के बाद AddRule का उपयोग करने में सक्षम होना चाहता हूं जो कक्षा की किसी दिए गए संपत्ति पर सत्यापन लागू करता है। मेरी चुनौती यह है कि मुझे नहीं पता कि "AddRule" के अंदर क्या करना है। मुझे पता है कि मुझे वैधता में उन लोगों को जारी रखने की ज़रूरत है, लेकिन मुझे नहीं पता कि यह कैसे करना है? – ctorx