के साथ डेटा एनोटेशन का उपयोग करते समय यदि आप this article on Validation with the Data Annotation Validators पढ़ते हैं, तो यह दिखाता है कि आप आंशिक कक्षाओं पर गुणों को सत्यापन गुण जोड़ने के लिए मेटाडेटा टाइप प्रकार का उपयोग कर सकते हैं। LINQ से SQL, Entity Framework, या Subsonic जैसे ORMs के साथ काम करते समय आप इसका उपयोग करते हैं। फिर आप "automagic" क्लाइंट और सर्वर साइड सत्यापन का उपयोग कर सकते हैं। यह एमवीसी के साथ बहुत अच्छी तरह से खेलता है।एमवीसी, प्रो और एक इंटरफेस बनाम एक मेटाडेटा टाइप
हालांकि, मेरे एक सहयोगी ने एक ही परिणाम को पूरा करने के लिए एक इंटरफ़ेस का उपयोग किया। यह लगभग बिल्कुल वही दिखता है, और कार्यात्मक रूप से एक ही चीज़ को पूरा करता है। तो बजाय ऐसा करने का:
[MetadataType(typeof(MovieMetaData))]
public partial class Movie
{
}
public class MovieMetaData
{
[Required]
public object Title { get; set; }
[Required]
[StringLength(5)]
public object Director { get; set; }
[DisplayName("Date Released")]
[Required]
public object DateReleased { get; set; }
}
वह इस किया था:
public partial class Movie :IMovie
{
}
public interface IMovie
{
[Required]
object Title { get; set; }
[Required]
[StringLength(5)]
object Director { get; set; }
[DisplayName("Date Released")]
[Required]
object DateReleased { get; set; }
}
तो मेरे सवाल है, जब इस अंतर को वास्तव में कोई फर्क पड़ता है है?
मेरे विचार यह है कि इंटरफेस अधिक "पुन: प्रयोज्य" होते हैं, और यह कि केवल एक वर्ग के लिए एक बनाना बहुत अधिक समझ में नहीं आता है। आप यह भी तर्क दे सकते हैं कि आप अपने वर्गों और इंटरफेस को ऐसे तरीके से डिज़ाइन कर सकते हैं जो आपको कई ऑब्जेक्ट्स पर इंटरफेस का उपयोग करने की अनुमति देता है, लेकिन मुझे लगता है कि यह आपके मॉडल को किसी अन्य चीज़ में फिट करने की कोशिश कर रहा है, जब उन्हें वास्तव में स्वयं पर खड़ा होना चाहिए। तुम क्या सोचते हो?
मैंने बिल्कुल यह किया और यह काम नहीं किया ...: -एस – Alxandr