none
Спасибо! RRS feed

Ответы

  • Есть два метода решения вашей задачи.

    Первый (неправильный) - использовать отражение для загрузки нужной сборки (методом System.AppDomain.Load или одним из методов System.Reflection.Assembly.LoadXXX), найти в ней (в свойстве ExportedTypes) нужный тип, создать через его метод CreateInstance объект этого типа и вызывать нужные методы  и свойства (либо присвоить созданный объект переменной типа dynamic, либо опять-таки через отражение, методом Invoke, ещё есть вариант через создание делегатов и вызов их через DynamicInvoke).

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

    Нужную сборку смотрите в документации.

    PS Вообще-то это  - вопрос по разработке, такие вопросы лучше задавать, например, на форуме MSDN


    Слава России!

    9 декабря 2019 г. 13:03

Все ответы

  • Есть два метода решения вашей задачи.

    Первый (неправильный) - использовать отражение для загрузки нужной сборки (методом System.AppDomain.Load или одним из методов System.Reflection.Assembly.LoadXXX), найти в ней (в свойстве ExportedTypes) нужный тип, создать через его метод CreateInstance объект этого типа и вызывать нужные методы  и свойства (либо присвоить созданный объект переменной типа dynamic, либо опять-таки через отражение, методом Invoke, ещё есть вариант через создание делегатов и вызов их через DynamicInvoke).

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

    Нужную сборку смотрите в документации.

    PS Вообще-то это  - вопрос по разработке, такие вопросы лучше задавать, например, на форуме MSDN


    Слава России!

    9 декабря 2019 г. 13:03
  • К сожалению, правильным путем пойти я никак не могу - нет такой возможности :( А по поводу неправильного пути - не могли бы Вы показать небольшой пример? Мало опыта в C#. А так - огромное Вам спасибо за наводку.

    9 декабря 2019 г. 13:18
  • Найдите книгу Джеффри Рихтера CLR via C# (она есть в русском переводе: "Программирование на платформе Microsoft .NET Framework 4.5 на языке C#") и посмотрите там в главе 23.

    PS Если вы компилируете свой файл с методом сами, отдельно от всего проекта, то можно добавить используемые сборки через ключ /r компилятора. Тогда ошибок компиляции у вас не будет (и это - тоже правильный метод).


    Слава России!

    9 декабря 2019 г. 14:15
  • К сожалению, компилирую я его не сам :(

    Спасибо за наводку - буду дальше изучать вопрос, попозже отпишусь по результату.

    10 декабря 2019 г. 5:06
  • У вас банальная ошибка, methodSearch равно null. Вместо type.GetMethod("FindAll"); должно быть typeSearcher.GetMethod("FindAll");

    Кроме того, не нужно копировать сборки стандартной библиотеки в другую папку. Просто грузите их сразу с исходного местоположения:

    string dir = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory();
    System.Reflection.Assembly a = System.Reflection.Assembly.LoadFrom(System.IO.Path.Combine(dir,"System.DirectoryServices.dll"));

    10 декабря 2019 г. 18:34
  • Трудно сказать, правильно или нет. Это правильно в том смысле, что это единственный способ это сделать в чистом C#, но с другой стороны, реализовывать какую-то сложную логику полностью на отражении - это абсолютное насилие над языком. Способ можно упростить с помощью dynamic, но сильно много это не даст. Более хорошей идеей, я думаю, было бы реализовать эту логику на PowerShell через какой-нибудь ADSI, и вызвать скрипт из C# через Process.Start.
    11 декабря 2019 г. 17:03
  • Огромное спасибо!

    Буду продолжать работу тогда, в случае чего новую тему создам.

    Ребята, а что посоветуете актуального по C# почитать?

    12 декабря 2019 г. 5:11
  • В плане бумажных книг? Ну например Язык программирования C# 7 и платформы .NET и .NET Core | Троелсен Эндрю, Джепикс Филипп


    12 декабря 2019 г. 7:40
  • Ага, интересуют любые носители - бумажные, pdf etc.. А то, материалов очень много, главное в них не утонуть :)

    До этого был более менее хороший опыт программирования на Python (применяемо к web'у - Django). но тут все иначе, начиная от типизации, заканчивая самой философией языка.

    А как вы считаете - будущее у C# большое, либо популярность его применения идет на спад? (не холиварю, просто интересно реальное положение дел :))

    12 декабря 2019 г. 8:24
  • Если в электронном виде, можно начать с руководств на Microsoft Docs: https://docs.microsoft.com/ru-ru/dotnet/csharp/tutorials/

    "А как вы считаете - будущее у C# большое, либо популярность его применения идет на спад? (не холиварю, просто интересно реальное положение дел :))"

    Про будущее трудно говорить, C# не развивающийся язык, а уже состоявшийся. Его популярность колеблется примерно на одном уровне с ~2014 г. Изменяются только сферы применения, так разработка чисто под Windows уступает место кроссплатформенной / веб. 

     
    12 декабря 2019 г. 9:42
  • Большое спасибо!
    12 декабря 2019 г. 11:31
  • Большое спасибо!
    12 декабря 2019 г. 11:31