बनाने के लिए मैं एक अमूर्त वर्ग सत्यापनकर्ता कहा जाता है:फैक्टरी सामान्य कक्षाओं
public abstract class Validator<T> where T : IValidatable
{
public abstract bool Validate(T input);
}
और मैं कुछ ठोस कार्यान्वयन है। एक AccountValidator है:
public class AccountCreateValidator : Validator<IAccount>
{
public override bool Validate(IAccount input)
{
//some validation
}
}
एक और LoginValidator होगा:
public class LoginValidator : Validator<IAccount>
{
public override bool Validate(IAccount input)
{
//some different validation
}
}
मैं अब एक कारखाने एक सत्यापनकर्ता कार्यान्वयन का एक उदाहरण वापस जाने के लिए बनाना चाहते हैं। कुछ की तरह:
public static class ValidatorFactory
{
public static Validator GetValidator(ValidationType validationType)
{
switch (validationType)
{
case ValidationType.AccountCreate:
return new AccountCreateValidator();
}
}
}
मैं तो लाइन हालांकि यह (वापसी नई AccountCreateValidator पसंद नहीं है यह कैसा
Validator myValidator = ValidatorFactory.GetValidator(ValidationType.AccountCreate);
फोन करने के लिए) चाहते हैं, या तथ्य यह है मैं के रूप में myValidator की घोषणा कर रहा हूँ वैलिडेटर और Validator<SomeType>
नहीं। किसी भी मदद की सराहना की जाएगी।
आपके पास जो कोड मिला है वह वर्तमान में अमान्य है - विधि का अंत पहुंच योग्य है। कृपया एक छोटा लेकिन पूरा कार्यक्रम दिखाएं जो समस्या का प्रदर्शन करता है। –
क्या आप एनम पर आधारित 'IValidatable' के प्रकार के आधार पर एक वैधकर्ता नहीं प्राप्त करेंगे? तो फिर तुम एक 'सत्यापनकर्ता' लौट सकते हैं और 'GetValidator' विधि में एक' T' लेने के लिए और '' T' IValidatable' –
'वर्ग सत्यापनकर्ता का होना जहां टी प्रतिबंधित किया जा सकता है: IValidatable', आपको लगता है कि नहीं है बस 'कक्षा सत्यापनकर्ता: IValidatable' चाहते हैं? –
vulkanino