У меня есть 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
О, мне не нужно использовать System.Drawing, чтобы это сделать. Я этого не знал. К сожалению, я работаю над UnityEngine, и UnityEngien не поддерживает System.Drawing хорошо в смешанных сборках. Я отредактирую вопрос, чтобы включить это. Спасибо. О, также. Мне просто нужно, чтобы метод обрабатывал больше, чем только тип изображения. но String, Font, Texture2D, любой другой класс. –
У меня нет опыта работы с Unity. Но вы не должны использовать общий метод в своем вопросе. Это потребует от вас проверки типа T (если T = образ .. если T = font ..), это настоящая плохая практика и никогда не должна использоваться. –
Как я могу вернуть объект типа (T), который я пытаюсь вытащить из dll? если я хочу файл шрифта из библиотеки DLL я хотел бы сказать, 'Font SomeFont1 = GetResource.LoadDllResource ("Ресурсы", "Всплеск", "TTF")' если я хотел Texture2D изображения я бы сказал 'UnityEngine.Texture2D SomeImage2 = GetResource.LoadDllResource (« Ресурсы »,« SnowImage »,« png »)' и просто указать, в автогенерированном разработчике ресурсов я заменяю System.Drawing.Bitmap с UnityEngine.Texture2D –