Вам нужно использовать отражение, чтобы начать использовать метод, а затем «построить» его, предоставив аргументы типа MakeGenericMethod :
MethodInfo method = typeof(Sample).GetMethod("GenericMethod");
MethodInfo generic = method.MakeGenericMethod(myType);
generic.Invoke(this, null);
. Для статического метода, pass null
в качестве первого аргумента Invoke
. Это не имеет никакого отношения к универсальным методам - это просто нормальное отражение.
Как уже отмечалось, многое из этого проще с C # 4 с использованием dynamic
- если вы можете использовать вывод типа, конечно. Это не помогает в случаях, когда вывод типа недоступен, например, точный пример в вопросе.
После работы с ним некоторое время и взгляда на x264 и VideoLan, я вернулся в Splicer. Оказывается, что загадочное сообщение об ошибке происходило из-за ошибки в моем коде.
похоже, что Splicer сделает то, что я хочу: программно создайте видео из ряда изображений.
Благодаря всем, кто ответил.
Можно использовать VideoLan, и я рекомендовал бы это.
у меня был прямой опыт в приложении C# с VideoLan, делающим эти две вещи:
то, что VideoLan имеет интерфейс командной строки, является большой вещью. И VLC поддерживает параметр командной строки, который отключает любой визуальный элемент; таким образом, GUI VLC не открывается, и ни один не делает окно командной строки. Таким образом в приложении C# можно сдать связанную с видео работу в аренду клиенту VLC. C# имеет класс Процесса, который может управлять Вашими экземплярами vlc.exe для Вас. Это заканчивает тем, что было крутым решением.
Обработка видео в Windows (кодирование и воспроизведение) является реальным болотом. И.NET не собирается помогать Вам вообще - Вы всегда собираетесь быть или встроенными API PInvoking/COM-interoping или использованием обертки.NET, которую кто-то еще создал, чтобы сделать то же.
Так или иначе, я не могу сказать, что использовал его, но хорошая ставка, кажется, x264 библиотека, которая является частью videolan проекта . Это дает Вам автономную библиотеку C, что Вы можете PInvoke, и Вы не должны волноваться об установке и мусоре DirectShow на Вашем сервере. Это генерирует видео формата H.264, которое играемо в Flash насколько я понимаю.
Я использовал mplayer mencoder для создания AVI (с кодеками msmpeg4/mp3, читаемый по умолчанию с Windows Media Player) из файлов TGA на Linux как это:
mencoder mf://*.tga -mf fps=25:type=tga \
-audiofile /tmp/test.mp3 -oac copy \
-of lavf -ovc lavc \
-lavcopts vcodec=msmpeg4v2:mbd=2:mv0:trell:cbp:last_pred=3:vbitrate=3000 \
-o /tmp/test.avi
я знаю, что mplayer действительно имеет версию Windows.