Как получить доступ к закрытым константам в атрибутах классов в VB.Net? - PullRequest
2 голосов
/ 27 сентября 2011

У меня есть API, который я создал и в настоящее время успешно использую в C #. Я пытаюсь создать пример взаимодействия с API в VB.NET (чтобы QA без опыта C # все еще мог использовать его для создания автоматических тестов).

В C # я делаю следующее

[TestingForm(FormName= "Land Lines", CaseType= _caseType
            , Application= ApplicationNameCodes.WinRDECode, HasActions= true)]
public class LandLines : RDEMainForm
{
    // .. Irrelevant Code .. //
    private const string _caseType = "Land Lines";
}

Как человек с нулевым опытом работы с VB.Net, я создал следующее, чтобы попытаться подражать

<TestingForm(Application:=ApplicationNames.WinRDE, FormName:=FORM_NAME, CaseType:=CASE_TYPE, HasActions:=True, IncludeBaseClassActions:=False)>
Public Class Permits
    Inherits TestingBase


#Region "Constants"

    Private Const FORM_NAME As String = "Permits" 'Display name for the test class (in the editor)
    Private Const CASE_TYPE As String = "permits" 'Unique code for this test class, used when reading/saving test plans


#End Region

End Class

Это дает мне ошибку времени компиляции, потому что утверждает, что FORM_NAME и CASE_TYPE не определены, даже если класс определил их внутри.

Как я могу использовать определенные константы внутри класса в атрибутах класса?

1 Ответ

2 голосов
/ 27 сентября 2011

Я на самом деле очень удивлен, что пример C # компилируется (но я проверял, что это действительно так).

В VB.Net такой тип доступа (закрытый член вне типа даже в атрибуте) просто не разрешен. Вместо этого вам нужно сделать это Friend и квалифицировать его доступ

<TestingForm(Application:=ApplicationNames.WinRDE, FormName:=Permits.FORM_NAME, CaseType:=Permits.CASE_TYPE, HasActions:=True, IncludeBaseClassActions:=False)>
Public Class Permits
    Inherits TestingBase

    Friend Const FORM_NAME As String = "Permits" 'Display name for the test class (in the editor)
    FriendConst CASE_TYPE As String = "permits" 'Unique code for this test class, used when reading/saving test plans

End Class
...