Отражение DLL в Windows Phone API (SIlverlight) - PullRequest
2 голосов
/ 26 июля 2011

У меня есть код для чтения XAP и отражения DLL внутри. Это работает в Silverlight, но не в Windows Phone 7. Есть ли способ сделать это, потому что AssemblyPart.Load отсутствует в DLL-библиотеке Windows Phone.

Спасибо, код:

var client = new System.Net.WebClient();
client.OpenReadCompleted += delegate(object sender, OpenReadCompletedEventArgs e)
{
    StreamResourceInfo resourceInfoDLL = Application.GetResourceStream(
        new StreamResourceInfo(e.Result, null),
        new Uri("Some.DLL", UriKind.Relative));
       AssemblyPart assemblyPart = new AssemblyPart();
       Assembly assembly = assemblyPart.Load(resourceInfoDLL.Stream);


    .
    .
};

client.OpenReadAsync(new Uri("Some.xap", UriKind.Relative));

Ответы [ 2 ]

4 голосов
/ 26 июля 2011

Нет, Windows Phone 7 не поддерживает такого рода отражения. Вам разрешено отражать только открытые типы или внутренние типы (т.е. из одной и той же сборки). Microsoft не хочет, чтобы люди взламывали функциональность, которая не раскрывается напрямую через общедоступный API.

И ... зачем вам читать XAP изнутри XAP? Это не кажется мне значимым.

1 голос
/ 26 июля 2011

Помните, что XAP - это стандартный пакет ZIP, поэтому, пока вы можете разархивировать его, вы можете получить доступ к его внутреннему содержимому.

Это не даст вам много в долгосрочной перспективе для задачи, которую вы пытаетесь выполнить, потому что внутренние возможности Отражения ограничены статическими библиотеками, которые загружаются с приложением или доступны из GAC (Global Кэш сборок) . Смысл не в том, чтобы предотвратить взлом, потому что отражение сборок .NET в большинстве случаев не повредит ОС (для лучшего понимания модели безопасности прочитайте этот документ ). Это предотвращает динамическую загрузку кода, которая будет выполнять действия вне заявленных возможностей при публикации приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...