Как я могу получить универсальный Тип от строкового представления?

Я предполагаю, что вы хотите добавить несколько кнопок по горизонтали (например, с помощью обычного элемента управления рейтингом «звездочки»).

A UIStackView, как можно догадаться из его метода .addArrangedSubview(), организует свои подпредставления, основываясь на его .axis, .alignment, [ 114] и .spacing свойства, а также его frame.

Итак, прочитайте немного о UIStackView и о том, как его можно использовать. Скорее всего, вы в настоящее время ограничиваете свой пользовательский вид:

  • top
  • ведущий
  • трейлинг (или ширина)

Так добавление вашей кнопки в качестве arrangedSubView приводит к ее растяжению до ширины стека, потому что это значение по умолчанию.

Добавление его в качестве subview просто накладывает кнопку на представление стека, вместо того, чтобы позволить стековому представлению упорядочить его, и ваш вид стека, скорее всего, тогда будет иметь высоту ноль - поэтому кнопка не может быть нажата. 1121]

Попробуйте установить только верхние и ведущие ограничения , когда добавляете свой пользовательский вид стека. Это должно дать вам кнопку 44 x 44, которую можно нажать.

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

79
задан Peter Mortensen 17 September 2016 в 17:35
поделиться

4 ответа

Формат для дженериков является именем, 'символом, количеством параметров типа, сопровождаемых разграниченным запятой списком типов в скобках:

Type.GetType("System.Collections.Generic.IEnumerable`1[System.String]");

Я не уверен, что существует простой способ преобразовать из синтаксиса C# для дженериков к виду строки, которую хочет CLR. Я начал писать быстрый regex для парсинга его как Вы упомянутый в вопросе, но понял, что, если Вы не бросаете способность вложить дженерики как параметры типа, парсинг станет очень сложным.

94
ответ дан Neil Williams 24 November 2019 в 10:12
поделиться

Выезд Activator.CreateInstance - можно назвать его с типом

Activator.CreateInstance(typeof(MyType))

или с именем сборки и именем типа как string

Activator.CreateInstance("myAssembly", "myType")

Это приведет Вам пример типа, в котором Вы нуждаетесь.

Если Вам нужно Type вместо экземпляра, используйте Type.GetType() метод и полностью определенное название типа Вы интересуетесь, например:

string s = "System.Text.StringBuilder";
Type myClassType = Type.GetType(s);

Это даст Вам Type рассматриваемый.

38
ответ дан mipe34 24 November 2019 в 10:12
поделиться

Чтобы просто получить текстовый объект от строки используйте:

Type mytype = Type.GetType(typeName);

Можно затем передать это Activator.CreateInstance():

Activator.CreateInstance(mytype);
3
ответ дан Turnor 24 November 2019 в 10:12
поделиться

У меня нет большого количества времени для парсинга через это, хотя я думаю, что видел некоторые подобные ответы. В частности, я думаю, что они делают точно, что Вы хотите сделать здесь:

Платформа объекта универсальная ошибка репозитория

(String.Format("[{0}]", baseType.Name.ToString())).OfType<T>();

Надо надеяться, это помогает, сообщите мне более конкретно, если это не.

0
ответ дан Community 24 November 2019 в 10:12
поделиться
Другие вопросы по тегам:

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