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