使用C#,如何访问VB类的getter/setter';带参数的默认属性?
我正在使用DLL,无法更改。DLL是使用VB.NET编写的。有一个类,它包含以下属性:使用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#访问同一属性?我找到了类似
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 soMyClass.get_MyProperty(name)代码>不返回对象
?(例如,var-myVar=MyClass.get_-MyProperty(“属性名称”);
@Zee:你的答案就在链接的问题中。令人恼火的是,他们选择将属性命名为AsString
,这可能会让你感到困惑。但是你应该能够键入类似var-foo=MyClass.get_-MyProperty(“属性名称”)的内容。)
.C#只是将这些转换为常规函数调用。您的示例有点不正确。您的属性不是静态的。但您试图像访问静态属性一样访问它。事实上,您所说的有效的VB.NET示例也会犯此错误。您确定您的示例是准确的吗?或者您的属性实际上是静态的吗(或在VB.NET行话中共享)?