全新的。
我想要实现的是拥有一个接口,外部人员实现它并在我的程序中加载“实现”并将其绑定到我的接口,所以我对此有一些疑问以及我需要什么限制满足。
1-对于实现我的接口的用户,我是给他一个包含我的接口的 dll,还是只给他源代码,然后他使用它并添加他的实现代码?
1.1- 如果 1 为真,在我的程序中,我使用哪个接口?我可以使用直接从我的代码加载的接口,还是我被迫使用我提供给用户的同一个 DLL 中的接口?
2-命名空间是否需要相同?例如,我这边的接口在命名空间 Server.Interface 中,但是我发送的 dll 中的接口只是命名空间接口。
我尝试了两种方法来验证程序集是否实现了我的接口:
都在一个循环内:
foreach (Type t in plugin.GetTypes())
{
方法1
if (typeof(INovedades).IsAssignableFrom(t))
{
i = (INovedades)Activator.CreateInstance(t);
break;
}
方法2
Type typeInterface = t.GetInterface("CapaDatos.ServiciosExternos.INovedades", true);
if (typeInterface != null)
{
i = (INovedades)Activator.CreateInstance(t);
break;
}
方法 1 总是错误的,这意味着它永远不会验证。
方法 2,找到匹配项,但是在调用 CreateInstance 时,它给出了无法创建实例的异常。
我应该知道什么?