मैं इस सामान्य निर्दिष्ट करने के लिए कोशिश की, लेकिन मैं कई त्रुटियाँ हो रही है:एक जेनेरिक को कहां से निर्दिष्ट करें?
public void AddOrUpdate(T item, V repo) where T: IAuditableTable, V: IAzureTable<TableServiceEntity>
{
try
{
V.AddOrUpdate(item);
}
catch (Exception ex)
{
_ex.Errors.Add("", "Error when adding account");
throw _ex;
}
}
उदाहरण के लिए ":":
Error 3 ; expected
प्लस अन्य त्रुटियों सिर्फ पहली पंक्ति पर वी के बाद एक त्रुटि देता है :
Error 2 Constraints are not allowed on non-generic declarations
Error 6 Invalid token ')' in class, struct, or interface member declaration
Error 5 Invalid token '(' in class, struct, or interface member declaration
Error 7 A namespace cannot directly contain members such as fields or methods
Error 8 Type or namespace definition, or end-of-file expected
क्या मेरे जेनेरिक कोडिंग के साथ कुछ स्पष्ट रूप से गलत है?
अद्यतन:
मैं अब परिवर्तन और कोड बना इस तरह दिखता है:
public void AddOrUpdate<T, V>(T item, V repo)
where T : Microsoft.WindowsAzure.StorageClient.TableServiceEntity
where V : IAzureTable<TableServiceEntity>
{
try
{
repo.AddOrUpdate(item);
}
catch (Exception ex)
{
_ex.Errors.Add("", "Error when adding account");
throw _ex;
}
}
व्युत्पन्न वर्ग से यह कॉलिंग:
public void AddOrUpdate(Account account)
{
base.AddOrUpdate<Account, IAzureTable<Account>>(account, _accountRepository);
}
आप शायद 'फेंक चाहिए,' यहां बल्कि 'से फेंक पूर्व;'। अन्यथा आप मूल स्टैक ट्रेस को टॉस देंगे। –