我成功使用动态编译的程序集在运行时评估用户可定义的表达式。我的问题是如何将对我自己的程序中定义的类型的引用传递给CompileAssemblyFromSource()函数。目前我被迫在用户可定义的表达式中使用'object',这会导致后期绑定。一旦我尝试在汇编代码中使用我自己的类型,我得到'错误BC30002 - 类型'cMyClass'未定义'
我发现以下内容添加到听起来完全正确的参数:
Dim executingAssembly As Assembly
Dim executingAssemblyName As String
executingAssembly = Assembly.GetExecutingAssembly()
executingAssemblyName = executingAssembly.Location
params.ReferencedAssemblies.Add(executingAssemblyName)
但这似乎没有任何帮助......
这是我试图编译失败的示例函数:
Public Class Sample
Public Shared Function StaticFunction(ByVal myObject As cMyClass) As String
Return myObject.DoSomething
End Function
End Class
如果我用'object'替换'cMyClass'一切都很好。