【发布时间】:2009-08-11 21:53:18
【问题描述】:
好的,我有一个通用接口
public IConfigurationValidator<T>
{
void Validate();
}
实现它的类:
public class SMTPServerValidator : IConfigurationValidator<string>
{
public void Validate(string value)
{
if (string.IsNullOrEmpty(value))
{
throw new Exception("Value cannot be null or empty");
}
}
}
我现在想使用反射来创建 SMTPServerValidator 的实例,因为我知道该类型的 AssemblyQualifiedName。
我正在考虑使用 Activator.CreateInstance 并将其转换为界面... 像这样:
IConfigurationValidator<T> validator = (IConfigurationValidator<T>)Activator.CreateInstance(typeof(SMTPServerValidator));
我不知道 T 是什么....如何使用反射来创建此类的实例?
还有一个我正在处理的课程被我遗漏了:
public class ConfigurationSetting<T>
{
IConfigurationValidator<T> m_Validator;
public ConfigurationSetting(IConfigurationValidator<T> validator)
{
m_Validator = validator;
}
public void Validate(T value)
{
m_Validator.Validate(value);
}
}
最后我尝试创建 ConfigurationSettings 并需要根据参数传入适当的验证器。
【问题讨论】:
-
Validate方法不应该没有参数吗?
-
我改变了很多东西...我意识到我还有其他问题...
标签: c# .net generics reflection