2011-09-27 81 views
2

我有一個API,我創建併成功地在C#中使用。我試圖創建一個在VB.NET中與API交互的例子(這樣,沒有C#經驗的QA仍然可以利用它來創建自動化測試)。如何在VB.Net的類屬性中訪問私有常量?

在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_NAMECASE_TYPE未定義,即使該類已在裏面定義它。

如何在類屬性中使用類中定義的常量?

回答

2

我真的很驚訝,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 
+0

這就像一個魅力!謝謝, – KallDrexx