2016-03-23 5 views
1

Ich versuche, ein Objektarray mit einem Index zu erstellen, der in Microsoft Access verfügbar gemacht werden kann. Ich habe herausgefunden, wie man eine Indexer-Klasse erstellt, aber da es generisch ist, wird die Eigenschaft in Access VBA nicht verfügbar gemacht. Um genauer zu sein, ich bin Umwandlung einer VB.NET COM-DLL, die mit Access funktioniert, und dies ist ein String-Array Fewokode ich zu konvertieren bin versucht:Nicht-generischer Indexer für C# COM DLL Eigenschaft

Public Shared _ReportParameters(0 To 9) As String 
    Public Property ReportParameters(Optional index As Integer = Nothing) As String 
     Get 
      Return _ReportParameters(index) 
     End Get 

     Set(ByVal Value As String) 
      _ReportParameters(index) = Value 
     End Set 
    End Property 

Hier ist der Code, den ich habe umgewandelt zu C#, die eine Indexer-Klasse verwendet, die nicht in der DLL verfügbar gemacht werden kann:

Irgendwelche Ideen? diese

Antwort

1

Die nächstgelegene in C# des VB.NET-Code ist Sie auf dem Laufenden:

class Thing 
{ 
    public static string[] _ReportParameters = new string[10]; 
    public string[] ReportParameters { get { return _ReportParameters; } } 
} 

die als

var thing = new Thing(); 
var result = thing.ReportParameters[0]; 
thing.ReportParameters[1] = "Test"; 

jedoch verwendet wird, wird ein Indexer wie folgt geschrieben:

class Thing 
{ 
    public static string[] _ReportParameters = new string[10]; 
    public string this[int index] 
    { 
     get 
     { 
      return _ReportParameters[index]; 
     } 
     set 
     { 
      _ReportParameters[index] = value; 
     } 
    } 
} 

Das wird als

verwendet
+0

Auch ich sollte beachten, es ist ein wenig seltsam für eine Instanz-Eigenschaft, ein statisches (und öffentliches) Feld zurückgeben. – Rob

Verwandte Themen