У меня следующая ситуация:Как вызвать общий метод с свойством Type?
public class ListingAttribute : AgencyServicesApi.Attribute
{
public Type ClrType { get; set; }
//public void SetValue(object value)
//{
// this.SetValueGen<ClrType>((ClrType)value);
//}
public void SetValueGen<TValue>(TValue value)
{
var t = typeof(TValue);
Value = // Use conversion methods based on ClrType here.
}
}
Я не могу сделать ListingAttribute
родовые и использовать общий параметр T
для ClrType
, потому что я должен установить тип во время выполнения. AgencyServicesApi.Attribute
имеет вонючий Value
имущество типа string
, независимо от того, должен ли быть содержание Value
любым другим типом. Я пытаюсь расширить AgencyServicesApi.Attribute
и на основе файла конфигурации правильно установить ClrType
и иметь возможность добавить правильную проверку и выполнить ToString
.
Как я могу назвать общий метод SetValueGen
и передать ему тип ClrType
как параметр типа? SetValue
закомментирован, потому что он не компилируется, и я бы этого не ожидал, но я застрял в этом вопросе.
Я хочу, чтобы принимать решения, основанные на 'ClrType 'объекта, а не тип значения, переданного в SetValue, как ваш второй пример. Я хочу только принимать типы, которые соответствуют ClrType, но, возможно, мне нужно просто использовать проверки проверки старомодного типа. – ProfK
Я вижу ... Думаю, отражением является ваш лучший выбор: 'if (ClrType.IsInstanceOfType (value))', но мне все еще неясно, что именно вы пытаетесь сделать здесь, поэтому я не могу отредактировать свой ответ в значимым образом, если вы не предоставите более подробную информацию –