public MyResourceDataFile(string fileName)
{
#if DOTNETCORE
var reader = new System.Resources.Extensions.DeserializingResourceReader(fileName);
#else
var reader = new System.Resources.ResourceReader(fileName);
#endif
this.FileName = fileName;
this.Name = Path.GetFileNameWithoutExtension(fileName);
var objValues = new Dictionary <string, object>();
var strValues = new Dictionary <string, string>();
var resouceSet = new System.Resources.ResourceSet(reader);
var enumer = resouceSet.GetEnumerator();
var lstData = new List <byte>();
bool hasBmpValue = false;
while (enumer.MoveNext())
{
string itemName = (string)enumer.Key;
var item = new MyResourceDataItem();
item.Name = itemName;
item.StartIndex = lstData.Count;
item.Key = _Random.Next(1000, int.MaxValue - 1000);
item.Value = enumer.Value;
if (enumer.Value is string)
{
item.IsBmp = false;
string str = (string)item.Value;
int key = item.Key;
for (int iCount = 0; iCount < str.Length; iCount++, key++)
{
var v = str[iCount] ^ key;
lstData.Add((byte)(v >> 8));
lstData.Add((byte)(v & 0xff));
}
}
else if (enumer.Value is System.Drawing.Bitmap)
{
item.IsBmp = true;
hasBmpValue = true;
var ms = new System.IO.MemoryStream();
((System.Drawing.Bitmap)item.Value).Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
var bs2 = ms.ToArray();
byte key = (byte)item.Key;
for (int iCount = 0; iCount < bs2.Length; iCount++, key++)
{
bs2[iCount] = (byte)(bs2[iCount] ^ key);
}
lstData.AddRange(bs2);
}
else
{
throw new NotSupportedException(item.Value.GetType().FullName);
}
item.BsLength = lstData.Count - item.StartIndex;
this.Items.Add(item);
}
resouceSet.Close();
this.Datas = lstData.ToArray();
}