C# 动态添加接口的扩展类
时间: 2023-08-02 22:05:15 浏览: 166
动态添加接口的扩展类可以使用C#的反射机制来实现。下面是一个简单的示例,演示了如何动态添加IExtension接口的扩展类:
首先,我们定义一个IExtension接口:
```csharp
public interface IExtension
{
void DoSomething();
}
```
然后,我们定义两个扩展类,它们实现了IExtension接口:
```csharp
public class ExtensionA : IExtension
{
public void DoSomething()
{
Console.WriteLine("ExtensionA is doing something.");
}
}
public class ExtensionB : IExtension
{
public void DoSomething()
{
Console.WriteLine("ExtensionB is doing something.");
}
}
```
接下来,我们可以使用反射机制动态创建这些扩展类的实例,并将它们添加到一个列表中:
```csharp
List<IExtension> extensions = new List<IExtension>();
Assembly assembly = Assembly.GetExecutingAssembly();
Type typeA = assembly.GetType("Demo.ExtensionA");
Type typeB = assembly.GetType("Demo.ExtensionB");
IExtension extA = (IExtension)Activator.CreateInstance(typeA);
IExtension extB = (IExtension)Activator.CreateInstance(typeB);
extensions.Add(extA);
extensions.Add(extB);
```
在这个示例中,我们使用Assembly类的静态方法GetExecutingAssembly获取当前正在执行的程序集。然后,我们使用GetType方法获取扩展类的Type对象,这里我们使用了类的完整名称。接下来,我们使用Activator类的CreateInstance方法创建扩展类的实例,并将它们添加到一个列表中。
现在,我们可以遍历扩展列表,并调用它们的DoSomething方法来执行扩展操作:
```csharp
foreach (IExtension extension in extensions)
{
extension.DoSomething();
}
```
这样,我们就可以动态添加接口的扩展类,并使用它们来扩展我们的应用程序。
阅读全文