在c#中引用时,VB程序集中的默认公共只读属性不会出现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在c#中引用时,VB程序集中的默认公共只读属性不会出现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1328字,纯文字阅读大概需要2分钟。
内容图文
当我尝试在C#App中使用VB程序集中的属性时遇到问题. VB程序集是在.NET 1.1中创建的,我尝试使用它的应用程序是C#中的.NET 4.5.我查看了VB程序集的代码,并注意到在C#App中实例化对象时未出现的程序集中的属性是声明为Default Public ReadOnly Property的属性.如果我删除Default关键字,则该属性将出现在C#对象中.但是这里的问题是dll用于VB中创建的许多其他应用程序中,并且在这些应用程序中不存在此问题.我没有可能只为我的代码更改此DLL.
以下是我发生的事情的一个例子:
VB汇编代码
Default Public ReadOnly Property MyProperty(ByVal value As String) As String
Get
...
End Get
End Property
在C#实例化对象中,除非从中删除Default关键字,否则此属性永远不会出现.
解决方法:
我在C#中创建了一个测试项目并执行以下操作:
var foo = new Class1();
Console.WriteLine(foo.MyProperty("Hello")); // Compile-time error
Console.WriteLine(foo.get_MyProperty("Hello")); // Compile-time error: 'Test1.Class1.this[string].get': cannot explicitly call operator or accessor
Console.WriteLine(foo.GetType().GetProperty("MyProperty").GetGetMethod().Invoke(foo, new object[]{"Hello"})); // Works
Console.WriteLine(foo["Hello"]); // Works
在C#中访问索引器的常规方法是最后一行,这是有效的. Intellisense不显示MyProperty属性,尝试调用它会产生编译时错误.但看起来我可以通过反思来访问它.
在C#中使用索引器的documentation显示了使用属性为其他语言指定索引器名称的代码,因此我猜测C#不支持以这种方式调用索引器.
内容总结
以上是互联网集市为您收集整理的在c#中引用时,VB程序集中的默认公共只读属性不会出现全部内容,希望文章能够帮你解决在c#中引用时,VB程序集中的默认公共只读属性不会出现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。