2015-05-26 4 views
0

Когда я запускаю мое приложение, чтобы проверить это, я перейти на страницу и получить эту ошибку:Ошибка времени выполнения; метод не является членом данного пространства имен

BC30456: 'CheckUserStatus' is not a member of 'UDPC'. 
<%If UD.UDPC.CheckUserStatus(aIsPopup, "UDCMain.aspx", aReason) = False Then%> 

Но если я использую Go To Definition на CheckUserStatus в Visual Studio он берет меня к декларации по этому способу, в другом классе в том же проекте, который определен как таковой:

Public Function CheckUserStatus(ByVal aIsPopup As Boolean, ByVal aFrom As String, ByRef aReason As String) 

    Return mCheckUserStatus(aIsPopup, aFrom, aReason) 

End Function 

mCheckUserStatus определяется как таковой, в том же классе, что и предыдущий метод:

Public Function mCheckUserStatus(ByVal aIsPopup As Boolean, Optional ByVal aFrom As String = "", Optional ByRef aReason As String = "") As Boolean 
    // a bunch of logic to determine if mCheckUserStatus = true or false 
End Function 

Я новичок в VB, но у меня есть приличный опыт C#, но я не могу понять, что здесь не так.

Также, что-то, что я не понимаю, как CheckUserStatus способен return mCheckUserStatus(...), когда As Boolean не добавляется к объявлению метода?

Редактировать; Кажется, я просто нашел его. CheckUserStatus является частью Public Module UDRequest, но mCheckUSerStatus является частью Module UDCommonLocal - не является общедоступным модулем?

изменить2; Я попытался полностью квалифицировать его, изменив его на <% If ...UDRequest.CheckUserStatus..., но это ничего не изменило.

+1

Сделать эту функцию общедоступной ... иначе вам нужен экземпляр этого класса. Также включите опцию Strict youll. – Codexer

+0

@ 436f6465786572 «Методы в модуле не могут быть разделены» - это то, что я получаю, если попытаюсь. – sab669

+0

Является ли это публичным модулем? – Codexer

ответ

1

Для вашего первого вопроса, я хотел бы попытаться импортировать пространство имен, что-то вроде:

<%@ Import Namespace="YourNamespace" %>

Для вас 2 вопроса - Vb.net знает, как преобразовать тип. Это похоже на возвращение общего объекта в C#.

Если преобразовать код, используя C# для Vb.net code converter вы получите:

public object CheckUserStatus(bool aIsPopup, string aFrom, ref string aReason) 
{ 
    return mCheckUserStatus(aIsPopup, aFrom, aReason); 
} 
+0

Я попытался добавить Импорт для 'UDCommonLocal', как упоминалось в моем редактировании, в фактическом коде для ASP-файла и отдельно в самом файле ASP, как вы предполагали, но, к сожалению, это не устранило проблему - такие же результаты – sab669

0

Оказался очень странно проблема с некоторыми местными разрешениями на некоторых файлов в Windows, и создавать конфигурации в Visual Studio - ничто действительно не связано с кодом, с которым кто-либо мог бы помочь.

Смежные вопросы