Разработчик должен создать экземпляр …, не может, потому что тип объявляется кратким обзором

Вы можете использовать нижеприведенный код для получения текущего часового пояса

 func getCurrentTimeZone() -> String{

         return String (TimeZone.current.identifier)

  }

  let currentTimeZone = getCurrentTimeZone()
   print(currentTimeZone)
35
задан BFree 26 January 2009 в 21:16
поделиться

2 ответа

Я не видел содержания городского картофеля (его пух), но я и Смелч пришли к решению. Сама форма наследуется от абстрактного класса, поэтому они не говорят вам, что это единственный 1-й уровень наследования, который не может быть абстрактным, а 2-й уровень ниже может.

Оттуда просто нужно иметь пустой класс посередине и обернуть #if debug вокруг объявления форм, и все готово. Просто убедитесь, что выпускаете в режиме выпуска, а проектируете в режиме отладки (что очень типично).

Вы получите полную поддержку дизайнера и реальный абстрактный базовый класс во время проектирования (отладки) и сборки (выпуска), потому что каждый раз он заканчивается использованием вашего абстрактного базового класса.

Полное объяснение и ответ здесь

29
ответ дан 27 November 2019 в 15:45
поделиться

Можно решить это использование атрибута на абстрактном классе как следующий

[TypeDescriptionProvider(typeof(AbstractControlDescriptionProvider<MyBaseFormEf, Form>))]

, Это будет работать на каждый случай, где Вам нужен он. AbstractControlDescriptionProvider ниже

public class AbstractControlDescriptionProvider<TAbstract, TBase> : TypeDescriptionProvider
{
    public AbstractControlDescriptionProvider()
        : base(TypeDescriptor.GetProvider(typeof(TAbstract)))
    {
    }

    public override Type GetReflectionType(Type objectType, object instance)
    {
        if (objectType == typeof(TAbstract))
            return typeof(TBase);

        return base.GetReflectionType(objectType, instance);
    }

    public override object CreateInstance(IServiceProvider provider, Type objectType, Type[] argTypes, object[] args)
    {
        if (objectType == typeof(TAbstract))
            objectType = typeof(TBase);

        return base.CreateInstance(provider, objectType, argTypes, args);
    }
}
0
ответ дан 27 November 2019 в 15:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: