मैं विभिन्न परियोजनाओं पर इसका इस्तेमाल करने के लिए एक मान्यता घटक लिखने के लिए जा रहा हूँ। मैं Enterprise लाइब्रेरी VAB, Fluent, CuttingEdge.Conditions की तरह मान्यता चौखटे और इतने सारे दूसरों से किसी के साथ वास्तव में परिचित नहीं हूँ, लेकिन मैं उन सभी के साथ काम करने के लिए देखने के लिए जो मेरा उद्देश्य के लिए बेहतर है समय नहीं है।WCF और WebService विधि पैरामीटर मान्य की सबसे अच्छा तरीका महत्व देता
पहले, मैं EmailValidator, StringLengthValidator, MyCustomValidator जैसे कुछ प्रमाणकों और इतने पर करना चाहते हैं, कि मैं उन्हें इस्तेमाल कर सकते हैं जब भी मैं में हैं:
मैं इस घटक मेरे लिए 2 अलग कार्यक्षमताओं प्रदान करना चाहते हैं कोड, नीचे की तरह:
public class EmailValidator : RegexValidator // or StringValidator or whatever!
{
public EmailValidator() : base("emailRegexHere")
{
}
public bool override DoValidate(string value)
{
return base.DoValidate(value);
}
}
...
public void MyMethod(string email)
{
EmailValidator validator = new EmailValidator();
if(!validator.Validate(email))
throw new NotValidatedException("email is invalid.");
...
}
दूसरा, मैं किसी भी विधि पैरामीटर है कि मैं किसी भी अतिरिक्त कोडिंग के बिना चाहते हैं DataAnnotations की तरह कुछ लगाने से मानकों को मान्य करने के लिए की जरूरत है। मुझे पता है कि एक संभावित तरीका PostSharp का उपयोग कर कोड इंजेक्ट करने के लिए पहलू लिख रहा है जहां विधि शुरू होती है (OnMethodEntry)। मैंने पोस्टशर्प के साथ लॉगिंग किया है और यह बहुत अच्छा काम करता है।
इसके अलावा माइक्रोसॉफ्ट आईपीएएमटरेटर इंस्पेक्टर को Perform Input Validation in WCF पर पेश करता है जो 2 विधियों BeforCall और AfterCall प्रदान करता है, लेकिन मुझे लगता है कि यह केवल डब्ल्यूसीएफ के लिए काम करता है।
लपेट के लिए, मैं इस तरह मेरी WCF या WebService में मान्यकरण करना होगा:
[System.Web.Script.Services.ScriptService]
public class MyServiceClass : System.Web.Services.WebService
{
[Aspects.Validate]
[WebMethod(EnableSession = true)]
public string SubmitComment([Validation.Required]string content,[Validation.Guid] string userId,[Validation.Required] [Validation.Name]string name, [Validation.Email]string email, string ipAddress)
{
...
}
}
नोट: यह सिर्फ व्यवहार है कि मैं जरूरत है प्रदर्शित करने के लिए एक नमूना कोड है, किसी भी अन्य सुझाव है अच्छी तरह से सराहना की। यह भी एक अच्छा विचार है कि प्रमाणीकरण। * एनोटेशन को एक टिप्पणी में बदला जा सकता है जैसे वैलीडेटपेरम (टाइपफॉफ़ (ईमेलवैलिएटर))?
अग्रिम
यह वही है जो मुझे दिमाग में था, और मैंने लगभग कोडिंग समाप्त कर दी। मै मैट वेबर द्वारा यह [पोस्ट] (http://badecho.com/2011/11/validating-method-parameters-with-postsharp) पाया जो सहायक था (पहला भाग)। गुणों में सत्यापन कोड डालने के बारे में, मैंने एक इंटरफ़ेस विधि 'GetValidator' जोड़ा, इसलिए प्रत्येक विशेषता इसके उपयुक्त सत्यापनकर्ता को लौटाती है। मुझे जिस समस्या का सामना करना पड़ रहा है वह सामान्य रिक्तियों जैसे 'रेंज वैलिडेटेटर' के लिए है, क्योंकि सी # जेनेरिक विशेषताओं का समर्थन नहीं करता है, इसलिए मुझे प्रत्येक प्रकार के int, double, datetime जैसे कन्स्ट्रक्टर अधिभार लिखना है ... – Ashkan
वैसे धन्यवाद! आपके जवाब ने मुझे इस दृष्टिकोण के बारे में बेहतर महसूस किया। इसके अलावा मैं अपने सत्यापनकर्ता FluentValidation के साथ लिख रहा हूं। मुझे लगता है कि यह बहुत अच्छा है। – Ashkan