这很奇怪。我还没有发现其他人在这样做,这可能是有原因的。
我试图通过动态加载dll文件来进行一些后期绑定,然后创建该类的对象。基本上,我需要消耗一个dll而不实际添加对该dll的引用。
到目前为止,我使我的对象成为“动态的”而不是特定类的成员,使用Assembly.LoadFile()来获取dll。然后,我调用.GetTypes()并使用LINQ查找所需的特定类型。最后,我调用了Activator.CreateInstance(type,parameters [])来实例化它们。据我所知,在我在Visual Studio中查看对象时,所有内容都起作用,它表示它是我期望的类型。
我还无法弄清楚的部分是正确地填充了事件监听器。 (对不起,我不知道确切的正确术语,这可能无助于寻找答案。)主要问题是该方法具有对象类型作为dll已知但不是我的类已知的参数。 。所以我不能只像普通的那样创建方法:
%MyVariable%
...因为我的班不知道什么是UnknownObjectType。我已经看过有关MethodInfo对象的内容,但是我无法找到一种方法来自行创建具有品牌影响力的新方法“对象”,如果那是正确的处理方法。
问题的另一面是我实际上无法进行订阅。如果您去:
private void Listener_ThatsMyEvent(object sender, UnknownObjectType ItsAMystery)
{
ItsAMystery.MysteryMethod();
}
...它抱怨它不能使用方法组作为动态调度的运算符的参数。我尝试将其设为“对象”,但似乎只是表现为自身的重载(什么都没有碰到我的断点),我在某处读到,使其成为动态对象与用于重载目的的对象相同。
我知道我可以获取Listener类型并从中获取AddMethod MethodInfo,但这是我所得到的。我试图在这种情况下找到“ + =”的非语法糖版本,以查看是否可以从那里开始工作,但是没有找到它。