c# - 有什么方法可以限制类型变量可能持有的类型?

标签 c# .net types clr

我有类似于以下的代码。它将整数与类型相关联。然后我想使用这个字典来查找给定整数的类型,然后实例化该类型。

Dictionary<int, Type> RegistrationMethods;

RegistrationMethods = new Dictionary<int, Type>();
RegistrationMethods.Add(1, typeof(RegistrationProvider_01));
RegistrationMethods.Add(2, typeof(RegistrationProvider_02));

问:我的所有类型都实现了IRegistrationMethod .有什么方法可以声明我的字典,使其只能保存实现此接口(interface)的类型?这将使我的代码更安全。

感谢您的任何提示。

最佳答案

如果您只想创建它们,您可以这样做:

Dictionary<int, Func<IRegistrationMethod>> RegistrationMethods;
RegistrationMethods.Add(1, () => new RegistrationProvider_01());

或者,您可以要求通过一种方法添加所有元素:
public void AddRegistrationMethod<T>(int i) where T : IRegistrationMethod, new()
{
    RegistrationMethods.Add(i, typeof(T));
}

关于c# - 有什么方法可以限制类型变量可能持有的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22847430/

相关文章:

c# - 使用 MongoDB C# 驱动程序 2.0 添加元素或添加到数组

.net - Entity Framework Core 连接管理

python - 从 SWIG 生成的 Python 调用 C 函数,输出为 char *

.net - 手动创建未绑定(bind)的数据网格

sql - 如何检查类型属性是否已经存在

javascript - 类型应该是 javascript 数组之一 - Typescript

c# - 拆分字符串并附加到没有最后一个元素的新字符串,直到字符串列表为空

c# - 在具有多个上下文的 Entity Framework 上使用异步保存更改

c# - 当我放在启动文件夹中时,EXE 的行为有所不同

c# - 使用 Process.Start 在 C# 中打开文件