Каков лучший ресурс для изучения деревьев выражений C# подробно?

UITextView или его делегат не имеет API shouldReplaceCharacters, насколько я знаю (и я не нахожу ничего полезного, по крайней мере, для iOS - он существует для macOS, хотя )

Если я подкласс UITextView, я могу переопределить insertText и определить истинную точку вставки:

class TestTextView : UITextView {
    override func insertText(_ text: String) {

        let selectedRange = self.selectedRange
        if let markedRange = self.markedTextRange {
            Swift.print("TestTextView inserting \(text) at \(selectedRange.location) & \(selectedRange.length) ; marked = \(markedRange.start) & \(markedRange.end)")
        } else {
            Swift.print("TestTextView inserting \(text) at \(selectedRange.location) & \(selectedRange.length) and no marked range")
        }
        super.insertText(text)
    }
}

Когда я добавлю этот подкласс TestTextView в тестовый проект и включите клавиатуру VN. Вот что я вижу для uw, набранного в:

TestTextView inserting u at 17 & 0 and no marked range
TestTextView inserting ư at 17 & 0 and no marked range

в то время как «e» & amp; Набранный последовательно «b» выглядит следующим образом:

TestTextView inserting e at 17 & 0 and no marked range
TestTextView inserting b at 18 & 0 and no marked range

My Test Project UI looks like this

Наконец, мой ответ довольно прост, и вам может понадобиться [1111 ] отслеживать «помеченный диапазон текста», который вступает в игру с этим многоступенчатым вводом текста .

53
задан Charlie Flowers 25 March 2009 в 13:43
поделиться

3 ответа

Глава 11 (В Деревьях выражений) и глава 12 (Расширяющий Linq) Программирования Microsoft Linq (ISBN 13: 978-0-7356-2400-9 или ISBN 10: 0-7356-2400-3), было неоценимо для меня. Я не прочитал книгу Жонса, но он - качественный парень и объясняет вещи хорошо, таким образом, я предполагаю, что его покрытие также было бы хорошо.

Другой большой ресурс является блогом Де-Смета Bart

Кроме того, бдительно следите за MSDN, пример кода для создания Простого Linq к Базе данных (Pedram Rezaei) собирается получить приблизительно 40 страниц Doco, объясняя это.

Действительно, действительно полезный ресурс для Дерева выражений на самом деле я расценил бы его, поскольку необходимая вещь является Деревом выражений средство отладки Visualiser.

Необходимо также изучить столько, сколько Вы можете о Посетителях Дерева выражений, здесь существует довольно хорошая реализация базового класса.

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

  internal class DebugDisplayTree : ExpressionVisitor
  {
    private int indentLevel = 0;

    protected override System.Linq.Expressions.Expression Visit(Expression exp)
    {
      if (exp != null)
      {
        Trace.WriteLine(string.Format("{0} : {1} ", exp.NodeType, exp.GetType().ToString()).PrependIndent(indentLevel));
      }
      indentLevel++;
      Expression result = base.Visit(exp);
      indentLevel--;
      return result;
    }
    ...
36
ответ дан Robert Harvey 7 November 2019 в 08:51
поделиться

Я не утверждаю их быть всесторонним, но у меня есть много Expression размещает в моем блоге. Если Вы будете британские базирующийся, то я буду также представлять сессию на Expression в DDD на юго-запад в мае (и вчера вечером, но слишком поздно;-p). Я мог отправить деку слайда и некоторые ссылки из похожих статей, если Вы хотите..., к сожалению, pptx намеревался говориться, редко делает разумное автономное чтение.

Некоторое другое чтение (не из блога):

(и целая загрузка сообщений здесь и на microsoft.public.dotnet.languages.csharp - пытается искать: +expression-regex - "регулярное выражение"

17
ответ дан Marc Gravell 7 November 2019 в 08:51
поделиться

Изучите Схему. Выражения используют те же принципы в качестве лямбда-исчисления и следовательно дадут Вам некоторое лучшее понимание.

С другой стороны, можно посмотреть на ДОЛЛАР, который является подобным, но намного менее изящным.

5
ответ дан leppie 7 November 2019 в 08:51
поделиться
Другие вопросы по тегам:

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