C#COM DLL属性

时间:2016-03-23 01:39:15

标签: c# vb.net vba generics dll

我正在尝试使用可在Microsoft Access中公开的索引创建一个对象数组。我已经找到了如何创建索引器类,但由于它是通用的,因此该属性不会在Access VBA中公开。更具体地说,我正在转换一个与Access一起使用的VB.NET 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

这是我转换为C#的代码,它使用了一个无法在DLL中公开的索引器类:

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

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

您发布的VB.NET代码的C#中最接近的是:

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

用作

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

但是,索引器的编写如下:

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";