2015-10-08 2 views
0

У меня есть dll, которая хранит ресурсы изображения, ресурсы шрифтов и т. Д.Как преобразовать данные потока в объект?

У меня есть класс в сборке, который имеет метод возврата, который я хочу, чтобы иметь возможность извлекать ресурсы из dll и возвращать их как abject, который затем я могу преобразовать в соответствующий тип.

вот код, который у меня есть.

 public class GetResource 
    { 
      public static T LoadDllResource<T>(string ResourceFolder, string resourceName, string Extension, int width = 10, int height = 10) 
      { 
       Assembly myAssembly = Assembly.GetExecutingAssembly(); 
       Stream myStream = myAssembly.GetManifestResourceStream(myAssembly.GetName().Name + "." + ResourceFolder + "." + resourceName + "." + Extension); 

// convert stream to object by doing something like this (I'm not sure) 
//return (T)Convert.ChangeType(EndResultOFStreamConversion, typeof(object)); 
      } 
    } 

и использовать его таким образом

Font SomeFont1= GetResource.LoadDllResource<Font>("Resources","Splash","ttf") 

UnityEngine.Texture2D SomeImage2= GetResource.LoadDllResource<UnityEngine.Texture2D>("Resources","SnowImage","png") 

Позвольте мне знать, если есть проблема с вопросом. Спасибо за любую помощь!

Я работаю в Unity Engine, который не хорошо поддерживает смешанные сборки с использованием System.Drawing

ответ

0

Вы можете использовать Image.FromStream Method в System.Drawing имен для преобразования потока в изображение (не забудьте добавить ссылку к System.Drawing.dll к вашей сборке). Я не совсем уверен, что вы подразумеваете под «ресурсами шрифта», но я бы сделал это так:

+0

О, мне не нужно использовать System.Drawing, чтобы это сделать. Я этого не знал. К сожалению, я работаю над UnityEngine, и UnityEngien не поддерживает System.Drawing хорошо в смешанных сборках. Я отредактирую вопрос, чтобы включить это. Спасибо. О, также. Мне просто нужно, чтобы метод обрабатывал больше, чем только тип изображения. но String, Font, Texture2D, любой другой класс. –

+0

У меня нет опыта работы с Unity. Но вы не должны использовать общий метод в своем вопросе. Это потребует от вас проверки типа T (если T = образ .. если T = font ..), это настоящая плохая практика и никогда не должна использоваться. –

+0

Как я могу вернуть объект типа (T), который я пытаюсь вытащить из dll? если я хочу файл шрифта из библиотеки DLL я хотел бы сказать, 'Font SomeFont1 = GetResource.LoadDllResource ("Ресурсы", "Всплеск", "TTF")' если я хотел Texture2D изображения я бы сказал 'UnityEngine.Texture2D SomeImage2 = GetResource.LoadDllResource (« Ресурсы »,« SnowImage »,« png »)' и просто указать, в автогенерированном разработчике ресурсов я заменяю System.Drawing.Bitmap с UnityEngine.Texture2D –

Смежные вопросы