Выполнить метод внутри подписанного консольного приложения из неподписанной сборки с помощью 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 ответ
Подписанная сборка не может ссылаться на не подписанную сборку, но она может позднее привязаться к одной (загрузить ее).