2016-03-23 13 views
1

Microsoft Accessで公開可能なインデックスを持つオブジェクト配列を作成しようとしています。私はインデクサークラスを作成する方法を見つけましたが、一般的なので、プロパティはAccess VBAの内部に公開されていません。具体的には、私はAccessで働くVB.NET COM DLLを変換していて、これは私が変換しようとしている文字列配列のプロパティコードです:C#COM DLLプロパティの非汎用インデクサ

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 

ここで私はに変換したコードです

public static string[] _ReportParameters = new string[10]; 
    public Indexer<string> ReportParameters 
    { 
     get 
     { 
      return _ReportParameters.GetIndexer(); 
     } 
    } 

任意のアイデア:DLL内に露出することはできませんインデクサクラスを使用しているC#の?

答えて

1

あなたが投稿VB.NETコードのC#で最も近いがこれです:

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

として使用されている

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

次のようにしかし、インデクサが書かれている:

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

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

また、インスタンスプロパティが静的(およびパブリック)フィールドを返すのはちょっと奇妙なことに注意してください。 – Rob

関連する問題