Подтвердить что ты не робот

Можете ли вы назначить TypeConverter без TypeConverterAttribute?

Требования зависимостей заставляют меня иметь класс и его TypeConverter в разных узлы.

Есть ли способ назначить TypeConverter классу без использования TypeConverterAttribute и, таким образом, вызвать ссылки на циркулярную сборку.

Спасибо.

4b9b3361

Ответ 1

Хм, не уверен, что я видел это раньше, но вы можете добавить TypeConverterAttribute во время выполнения с помощью TypeDescriptor, поэтому дайте мои примеры классов:

public class MyType
{
    public string Name;
}

public class MyTypeConverter : TypeConverter
{
    public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
    {
        if (sourceType == typeof(string))
            return true;

        return base.CanConvertFrom(context, sourceType);
    }

    public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value)
    {
        if (value.GetType() == typeof(string))
            return new MyType() { Name = (string) value };

        return base.ConvertFrom(context, culture, value);
    }
}

Тогда у меня мог бы быть метод:

public void AssignTypeConverter<IType, IConverterType>()
{
  TypeDescriptor.AddAttributes(typeof(IType), new TypeConverterAttribute(typeof(IConverterType)));
}

AssignTypeConverter<MyType, MyTypeConverter>();

Надеюсь, что это поможет.

Ответ 2

Вы все равно можете использовать TypeConverterAttribute и использовать его конструктор, который принимает полное имя. См. MSDN.