使用C#,如何访问VB类的getter/setter';带参数的默认属性?

使用C#,如何访问VB类的getter/setter';带参数的默认属性?,c#,.net,vb.net,reflection,properties,C#,.net,Vb.net,Reflection,Properties,我正在使用DLL,无法更改。DLL是使用VB.NET编写的。有一个类,它包含以下属性: Default Property MyProperty(Name As String) As SomeObject //getter & setter End Property 使用VB.NET,我可以像这样访问这些值 Dim myVar As String = MyClass.MyProperty("a property name").Value 如何使用C#访问同一属性?我找到了类似

我正在使用DLL,无法更改。DLL是使用VB.NET编写的。有一个类,它包含以下属性:

Default Property MyProperty(Name As String) As SomeObject
     //getter & setter
End Property
使用VB.NET,我可以像这样访问这些值

Dim myVar As String = MyClass.MyProperty("a property name").Value
如何使用C#访问同一属性?我找到了类似情况的答案。但是,我需要将这个概念应用于字符串以外的其他对象

到目前为止我已经试过了

String returnValue = MyClass.get_MyProperty("a property name").Value
这会导致生成错误:

'MyClass.this[string].get': cannot explicitly call operator or accessor

在VB.NET中,带有参数的属性,如

Public Class MyClass
    Public Property MyProperty(param as String) as String
        //Getter
        //Setter
End Class
可以使用VB.NET DLL的程序集引用在C#中访问,如

MyClass classInstance = new MyClass();
classInstance.set_MyProperty("param", "value");
String var = classInstance.get_MyProperty("param");
VB.NET属性在C#中作为方法公开。但是,通过将
Default
关键字添加到VB.NET属性中,这将更改属性的公开方式

Public Class MyClass
    Default Property MyProperty(param as String) as String
        //Getter
        //Setter
End Class
当默认关键字存在时,该属性将在C#中作为索引器公开。所以你可以像这样访问这个属性

MyClass classInstance = new MyClass();
classInstance["param"] = "value";
String var = classInstance["param"];

关键字:
reflection
@crashmstr我从字面上链接了您所指的问题,并指定它如何无法完成我需要的任务。@zee so
MyClass.get_MyProperty(name)不返回
对象
?(例如,
var-myVar=MyClass.get_-MyProperty(“属性名称”);
@Zee:你的答案就在链接的问题中。令人恼火的是,他们选择将属性命名为
AsString
,这可能会让你感到困惑。但是你应该能够键入类似
var-foo=MyClass.get_-MyProperty(“属性名称”)的内容。)
.C#只是将这些转换为常规函数调用。您的示例有点不正确。您的属性不是静态的。但您试图像访问静态属性一样访问它。事实上,您所说的有效的VB.NET示例也会犯此错误。您确定您的示例是准确的吗?或者您的属性实际上是静态的吗(或在VB.NET行话中共享)?