gpt4 book ai didi

c# - GetInterface 始终返回 null

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:17 25 4
gpt4 key购买 nike

我尝试编写一个dll并由控制台程序调用,部分编码如下,但不知何故,我不知道为什么 getinterface 总是返回 null,然后我无法调用 dll 中的函数。

MyDLL.dll

namespace mynamespace
{
public interface IMyClass
{
void test();
}

public class MyClass : IMyClass
{
public void test()
{
// Do Something here
}
}
}

应用:

class Program
{
static void Main(string[] args)
{
List<object> output = new List<object>();

Assembly assembly = Assembly.LoadFile(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MyDLL.dll"));

foreach (Type t in assembly.GetTypes())
{
if (t.IsClass && !t.IsAbstract && t.GetInterface("mynamespace.IMyClass") != null)
{
output.Add(Activator.CreateInstance(t));
}
}

Console.WriteLine("Log is written successfully. Press any key to exit");
Console.Read();
}
}

我不知道为什么 t.GetInterface("mynamespace.IMyClass") 总是返回 null?

最佳答案

您需要限定您的类型名称。默认情况下,.net 将在调用程序集中查找类型。

if (t.IsClass && !t.IsAbstract && t.GetInterface("mynamespace.IMyClass, MYDLL") != null)
{
output.Add(Activator.CreateInstance(t));
}

但是,它更易于使用 Type.IsAssignableFrom()

if (t.IsClass && !t.IsAbstract && typeof(IMyClass).IsAssignableFrom(t))
{
output.Add(Activator.CreateInstance(t));
}

关于c# - GetInterface 始终返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22522729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com