【发布时间】:2021-02-04 14:41:59
【问题描述】:
我有一个 VB.NET 类库项目。它引用了一些带有 GuiComponent
Public Function findById(id As String) As GuiComponent
Return session.FindById(id)
End Function
在一个新的 C# 项目中,我想调用这个函数,我不想为它引用整个遗留库。 所以我用动态包装它
((dynamic)sth.findById("someId")).select
有没有办法在 VB.NET 中返回动态类型?
Public Function findById(id As String) As Dynamic 'something like this doesn't work
Return session.FindById(id)
End Function
C# 等效
public dynamic findById(string id) {
return session.FindById(id);
}
当然,我不想为整个项目关闭Option Strict。
【问题讨论】:
-
"我不想为整个项目关闭 Option Strict。" - 无需。为需要后期绑定的代码创建一个包含“Option Strict Off”的部分类代码文件。这与 VB 使用后期绑定一样精细。
-
@TnTinMn,我认为
Option Strict Off只能在VB 中的一类中使用。在 C# 中可以吗? -
@hiichaki,“Option Strict”不是类属性。它基于源文件和/或项目级别应用。源文件级别设置覆盖项目级别设置。我最初没有足够仔细地阅读您的问题,并且误解了您要做什么。在不验证它是否有效的情况下,Hans 提出的解决方案的一个更复杂的替代方案是将 GuiComponent 定义为继承自 DynamicObject。