Как позвонить а. net с параметром вывода?

Я просто хочу вызвать метод GenerateScript для Microsoft.Data.Schema.ScriptDom.Sql.Sql100ScriptGenerator из PowerShell .

#C

public void GenerateScript(
    IScriptFragment scriptFragment,
    out string script
)

Я нашел это , но я не могу заставить его работать

$sg = new-object  Microsoft.Data.Schema.ScriptDom.Sql.Sql100ScriptGenerator

$sql = 'select * from PowerShell'

$out = ''
$sg.GenerateScript($sql, [ref] $out)

$out

это дает

Cannot find an overload for "GenerateScript" and the argument count: "2".
At line:6 char:19
+ $sg.GenerateScript <<<< ($sql, [ref] $out)
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

Правка:

Текущая версия -

$sql = 'select * from PowerShell'

$sr = new-Object System.IO.StringReader($sql)

$sg =     new-object Microsoft.Data.Schema.ScriptDom.Sql.Sql100ScriptGenerator
$parser = new-object Microsoft.Data.Schema.ScriptDom.Sql.TSQL100parser($true)

$errors = ''
$fragment = $parser.Parse($sr,([ref]$errors))

$out = ''
$sg.GenerateScript($fragment,([ref][string]$out))

$out

Но я получаю сообщение об ошибке в строке

$fragment = $parser.Parse($sr,([ref]$errors))



Cannot find an overload for "Parse" and the argument count: "2".
At line:11 char:26
+ $fragment = $parser.Parse <<<< ($sr,([ref]$errors))
    + CategoryInfo          : NotSpecified: (:) [], MethodException
    + FullyQualifiedErrorId : MethodCountCouldNotFindBest

Я пытаюсь преобразовать

    IList errors;

    using (StringReader sr = new StringReader(inputScript))
    {
        fragment = parser.Parse(sr, out errors);
    }

Изменить:

Хорошо, это работает: различные типы интерполяции для каждой точки кривой (Linear, Cubic, ...

Я хочу реализовать довольно сложный CurveEditor, который должен поддерживать обычные требования, такие как:

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

sample illustration of the CurveEditorComponent

Я не хочу манипулировать фактическими кривыми WPF, а существующей моделью с наборами ключей / значений / касательных и пробовать точную форму кривой из нашей реализации.

Я уже получил некоторый опыт по реализации пользовательских элементов управления и шаблонов. . Но я хочу быть уверенным, что не пропущу ни одного очевидного решения. Я планировал создать это общее XAML-дерево:

  • CurveEditor - Окно, содержащее весь контент
    • MainThumb : включить перетаскивание и масштабирование диапазона редактора
    • XAxis : UserControl изменяет масштаб слева
    • YAxis : UserControl изменяет масштаб внизу
    • Curves : холст с изгибами
      • Кривая : UserControl для одной кривой
        • CurveName - Метка кривой
        • CurveLine - DrawingVisual, который будет отображать фактическую кривую путем выборки внутренней реализации функции сплайна.
        • CurveEditPoints - Холст, на котором хранятся все изменения точки
          • CurveEditPoint - UserControl для одной точки редактирования
            • LeftTangent - UserControl для левого манипулятора касательной
              • LeftTangentThumb - для изменения ручки
            • RightTangent - UserControl для правой касательной ручки
              • RightTangentThumb - Для изменения маркера
          • CurvePointCenter - Визуализация фактической точки, выбор состояния и типа интерполяции.
            • CurvePointThumb - Палец для выбора и перетаскивания точки вокруг

Я знаю, это довольно сложный вопрос, и я не прошу о фактической реализации. Меня интересуют следующие вопросы:

  1. Можете ли вы порекомендовать какие-либо учебные пособия или книги, которые могут мне помочь (у меня уже есть Illustrated WPF, WPF Control Development Unleashed и несколько других)
  2. Если второстепенные элементы, такие как касательные, будут отдельные UserControls?
  3. Какой контейнер лучше всего подходит для размещения отдельных «кривых», «точек редактирования» и «касательных». Прямо сейчас я использую Canvas и Canvas.SetLeft / SetTop для размещения дочерних элементов, но это кажется «странным».
  4. Следует ли мне использовать «Фигуры», такие как Path или DrawingVisual-Classes, для реализации фактического представления. Путь прямой, но меня беспокоит производительность с сотнями CurvePoints.
  5. Должен ли я использовать преобразования для поворота касательных, или можно просто выполнить некоторую триангуляционную математику в коде файлов?
  6. Имеет ли структура общий смысл, или вы предложить совершенно другой подход?

7
задан Matt 11 March 2011 в 18:24
поделиться