Бросок с GetType ()

Вы можете использовать

.scan(/^#(?!#)(?:(?!```)[^#]|```.*?```)*/m).flatten

См. Ruby demo и Rubular demo .

Подробности

  • ^ - начало строки
  • #(?!#) - a #, за которым не следует другой # [1118 ]
  • (?:(?!```)[^#]|```.*?```)* - 0 или более повторений
    • (?!```)[^#] - любого символа, кроме #, который не запускает ``` последовательность символов
    • | - или
    • ``` - три обратных бекака
    • .*? - любые 0+ символов, как можно меньше
    • ``` - три бекака

Модификатор m позволяет . соответствовать любому символу, включая символы разрыва строки.

32
задан bluish 30 June 2011 в 15:28
поделиться

3 ответа

Ваше намерение очень неясно; однако, одна опция является дженериками и MakeGenericMethod в частности. Что Вы хотите сделать с этим? Например:

static class Program
{
    static void Main()
    {
        object obj = 123.45;
        typeof(Program).GetMethod("DoSomething")
            .MakeGenericMethod(obj.GetType())
            .Invoke(null, new object[] { obj });
    }
    public static void DoSomething<T>(T value)
    {
        T item = value; // well... now what?
    }    
}

Так же теперь у нас есть значение, введенное как double через дженерики - но все еще нет очень, мы можем сделать с ним за исключением вызова другой общие методы..., что это было, Вы хотите сделать здесь?

15
ответ дан Marc Gravell 27 November 2019 в 20:42
поделиться

Я не могу думать, почему Вы хотели бы снять в качестве GetType (), потому что Вы не сможете сделать что-либо к полезному с результатом, не зная тип во время компиляции так или иначе.

, Возможно, то, что Вы ищете, является способностью Преобразовать. Если это так, следующее должно работать на Вас:

object input = GetSomeInput();
object result = Convert.ChangeType(input, someOtherObject.GetType());

Мы используем это при чтении значений из реестра, которые все хранятся как строки и затем наполнение их в свойства с помощью отражения.

40
ответ дан David Wengier 27 November 2019 в 20:42
поделиться

Можно использовать Activator.CreateInstance метод для создания экземпляра из типа.

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

4
ответ дан Spence 27 November 2019 в 20:42
поделиться
Другие вопросы по тегам:

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