Использование отражения в C # для доступа к My.Resources - PullRequest
0 голосов
/ 11 ноября 2011

Я унаследовал большой проект, написанный на смеси C # и VB.Net

В проекте много отдельных сборок.

Существуют сотни (или тысячи) ресурсов (файлы png), которые были вставлены в проект с использованием функциональности VB My.Resources, к которой я хотел бы получить доступ из некоторого кода C # в другой сборке.

Microsoft имеет статью КБ об этом. Он включает в себя некоторый пример кода, но я не могу заставить его работать (и я не могу точно следовать коду).

// Gets a reference to the same assembly that 
// contains the type that is creating the ResourceManager.
System.Reflection.Assembly myAssembly;
myAssembly = this.GetType().Assembly;

// Gets a reference to a different assembly.
System.Reflection.Assembly myOtherAssembly;
myOtherAssembly = System.Reflection.Assembly.Load("ResourceAssembly");

// Creates the ResourceManager.
System.Resources.ResourceManager myManager = new 
    System.Resources.ResourceManager("ResourceNamespace.myResources", myAssembly);

// Retrieves String and Image resources.
System.String myString;
System.Drawing.Image myImage;
myString = myManager.GetString("StringResource");
myImage = (System.Drawing.Image)myManager.GetObject("ImageResource");

Я не могу понять, почему код создает myAssembly и myOtherAssembly и, кажется, никогда не использует второй объект?

Выполняет ли действие загрузку второй сборки ...

myOtherAssembly = System.Reflection.Assembly.Load("ResourceAssembly");

... значит, мне не нужно ссылаться на него далее при создании ResourceManager ?

System.Resources.ResourceManager myManager = new 
    System.Resources.ResourceManager("ResourceNamespace.myResources", myAssembly);

Любая идея, как я могу получить доступ к этим ресурсам (с отражением или без него), будет принята с благодарностью!

1 Ответ

0 голосов
/ 11 ноября 2011

Попробуйте этот пример

http://msdn.microsoft.com/en-us/library/yfsz7ac5.aspx

Вы правы, когда говорите, что загрузка myOtherAssembly означает, что вам не нужно ссылаться на нее позже.Вам действительно не нужно объявлять локальную переменную для этого.

Я не уверен, почему это не сработает.Вы уверены, что пространство имен ресурса правильное?Если вы добавите точку останова после создания экземпляра ResourceManager, сможете ли вы увидеть в нем какие-либо ресурсы в отладчике?

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