如何将流数据转换为对象
本文关键字:转换 对象 数据 | 更新日期: 2023-09-27 18:16:42
我有一个存储图像资源,字体资源等的dll…
我在程序集中有一个类,它有一个返回方法,我希望能够从dll中提取资源,并将它们作为对象返回,然后我可以将其转换为各自的类型。
这是我到目前为止的代码。
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引擎中工作,它不能很好地支持使用System的混合组件。画
您可以使用图像。在System.Drawing
命名空间中的FromStream方法将流转换为图像(确保首先在程序集中添加对System.Drawing.dll的引用)。我不太确定你所说的"字体资源"是什么意思,但我会这样做:
public class GetResource
{
public Image GetImageFromResource(string resourceFolder, string resourceName, string extension)
{
return Image.FromStream(this.GetStreamFromResource(resourceFolder, resourceName, extension), true);
}
private Stream GetStreamFromResource(string ResourceFolder, string resourceName, string Extension)
{
Assembly myAssembly = Assembly.GetExecutingAssembly();
return myAssembly.GetManifestResourceStream(myAssembly.GetName().Name + "." + ResourceFolder + "." + resourceName + "." + Extension);
}
}