Выполнить метод внутри подписанного консольного приложения из неподписанной сборки с помощью Reflection

Прежде всего,

Извините за мое невежество в отношении.net и всего остального, я давно с ним работаю, но я все еще в процессе обучения, поэтому я спрашиваю.

Я изучаю рефлексию, и я тренировался, когда попробовал следующее:

я добавил неподписанную ссылку на подписанную сборку и все в порядке; компилятор сказал, что ссылка не имеет строгого имени (это то, что я ожидал).

Но когда я использовал MethodInfo.Invoke(null, null) чтобы вызвать статический метод, он работал отлично.

Я подписал проект (только консольный) на вкладке конфигурации.

я не понимаю, может кто-нибудь объяснить мне лучше

Вопрос в том:

Если сборка не подписана, почему работает в подписанной сборке, когда вызывается отражением.

Спасибо,

Мой код

Код из единственного проекта подписанного класса (Консольное приложение):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            Assembly a = Assembly.LoadFrom(
                @"path\ClassLibrary1.dll");

          var m= a.GetType("ClassLibrary1.ZZ");
          MethodInfo met = m.GetMethod("TroskisTroskis");
          met.Invoke(null,null);


           Console.ReadKey(true);
        }
    }
}

Код из единственного класса без подписи проекта сборки:

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;

namespace ClassLibrary1
{
    public  static class ZZ
    {
        public  static void TroskisTroskis()
        {
            Thread.Sleep(1000);
        }
    }
}

Спасибо

1 ответ

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

Другие вопросы по тегам