Ok У меня есть общий интерфейсСоздание экземпляра класса, который реализует общий интерфейс
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));
Я не знаю, что Т .... Как я использовать отражение, чтобы создать экземпляр этого класса?
Существует еще один класс, который имеет, что я имею дело с этим я ушел из:
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 имеет параметров? –
Я изменил много вещей вокруг ... Я понял, что у меня были другие проблемы ... – CSharpAtl