У меня возникают проблемы с преобразованием vb.net в C# .net.Преобразовать вызов статического метода vb.net на объект
У меня есть файлы в vb.net, у которых есть опция «Strict Off», чтобы обеспечить плохое программирование. Когда я конвертировать в C# я использую «динамический», пока я не вернусь и устранить проблемы, и это работает во всех случаях
Но теперь у меня есть этот код:
Public Class ContractResults
'Big class definition
Public Shared Sub CleanCache()
'Code here
End Sub
End Class
И в файле с Option Strict Off :
Public Sub VerifyResults(result as Object)
'Here, result is normally ContractResults
'first it check for that then call this:
result.CleanCache()
End Sub
В C# я использую «динамический», но ошибка во время выполнения появляется, когда я называю «статический» метод с динамической ссылкой. В vb.net, я могу назвать «общий» к югу от экземпляра, но в C# это не допускается
Исключение: «Microsoft.CSharp.RuntimeBinder.RuntimeBinderException» «пользователь„ContractTypes.ContractResults.CleanCache()“ не могут быть доступны с ссылкой на экземпляр, вместо этого присвойте ему имя типа «
Кажется, я должен преобразовать код, чтобы использовать фактический тип, но тогда это означает многое переписывание большего количества деталей. Кто-нибудь может показать другой путь?
Я хочу, чтобы убедиться, что вы не думаете, что я могу использовать
(result as ContractResults).CleanCache();
Поскольку все типы, которые могут быть переданы в есть метод «CleanCache()», но не наследует от всего того же, кроме " Объект». Существует много типов (30!), Которые имеют этот «статический» метод и поэтому используют параметр Strict Off
Для 30 типов я просто включил опцию Strict On и исправлю ее в VB. IDE предоставит вам предупреждения для каждого, и вы сможете проделать все довольно быстро. – 2010-11-30 19:23:03