CS1503 Argument 1: cannot convert from 'BoughtUpgrade.AvailableUpgrade' to 'AvailableUpgrade' - c#

I am making Unity Engine based game.
I have 2 classes. One is "BoughtUpgrade" the other is "RotateBase".
Inside "RotateBase" I am trying to save some data and store it inside file "/savedBoughtUpgrades.doma". But when I try to add an object inside List<BoughtUpgrade.AvailableUpgrade> availableUpgradeList which have the same attributes as List availableUpgradeList. How to convert from one type to another?
Here is my code:
public class RotateBase : MonoBehaviour
{
public List<AvailableUpgrade> availableUpgradeList = new List <AvailableUpgrade>();
[System.Serializable]
public class SaveDataUpgrades
{
public float coins;
public List<BoughtUpgrade.AvailableUpgrade> availableUpgradeList = new List<BoughtUpgrade.AvailableUpgrade>();
}
public void Load()
{
string fileLocation02 = Application.persistentDataPath + "/savedBoughtUpgrades.doma";
if (File.Exists(fileLocation02))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream stream = new FileStream(fileLocation02, FileMode.Open);
stream.Position = 0;
SaveDataUpgrades data = (SaveDataUpgrades)bf.Deserialize(stream);
stream.Close();
coins = data.coins;
//Reads the list and stores values in the original List
for (int i = 0; i < 10; i++)
{
availableUpgradeList.Add(data.availableUpgradeList[i]); //Error CS1503 shows up here
}
}
else if (!File.Exists(fileLocation02))
{
SaveDataUpgrades saveData = new SaveDataUpgrades();
for (int i = 0; i < 10; i++)
{
AvailableUpgrade availableUpgrade = new AvailableUpgrade();
availableUpgrade.alreadyBoughtUpgradeName = "Tsoko";
availableUpgrade.alredyBoughtUpgradeAmount = 0;
availableUpgradeList.Add(availableUpgrade);
}
saveData.coins = coins + points;
BinaryFormatter bf = new BinaryFormatter();
FileStream stream = new FileStream(fileLocation02, FileMode.Create);
bf.Serialize(stream, saveData);
stream.Close();
}
}
}
and here is my other class
public class BoughtUpgrade : MonoBehaviour
{
[System.Serializable]
public class AvailableUpgrade
{
public float alreadyBoughtUpgradePrice;
public float alredyBoughtUpgradeAmount;
public string alreadyBoughtUpgradeName;
}
public RotateBase.SaveDataUpgrades saveData;
public List<AvailableUpgrade> availableUpgradeList = new List<AvailableUpgrade>();
public float coins;
public void Save()
{
RotateBase.SaveDataUpgrades saveData = new RotateBase.SaveDataUpgrades();
//saveData.availableUpgradeList = availableUpgradeList;
//saveData.availableUpgradeList = availableUpgradeList;
string fileLocation02 = Application.persistentDataPath + "/savedBoughtUpgrades.doma";
BinaryFormatter bf = new BinaryFormatter();
FileStream stream = new FileStream(fileLocation02, FileMode.Create);
bf.Serialize(stream, saveData);
stream.Close();
}
public void Load()
{
string fileLocation02 = Application.persistentDataPath + "/savedBoughtUpgrades.doma";
if (File.Exists(fileLocation02))
{
BinaryFormatter bf = new BinaryFormatter();
FileStream stream = new FileStream(fileLocation02, FileMode.Open);
stream.Position = 0;
RotateBase.SaveDataUpgrades data = (RotateBase.SaveDataUpgrades)bf.Deserialize(stream);
stream.Close();
//coins = data.coins;
//Reads the list and stores values in the original List
for (int i = 0; i < 10; i++)
{
//availableUpgradeList.Add(data.availableUpgradeList[i]);
availableUpgradeList.Add(data.availableUpgradeList[i]);
}
}
else if (!File.Exists(fileLocation02))
{
RotateBase.SaveDataUpgrades saveData = new RotateBase.SaveDataUpgrades();
for (int i = 0; i < 10; i++)
{
BoughtUpgrade.AvailableUpgrade availableUpgrade = new BoughtUpgrade.AvailableUpgrade();
availableUpgrade.alreadyBoughtUpgradeName = "Tsoko";
availableUpgrade.alredyBoughtUpgradeAmount = 0;
availableUpgradeList.Add(availableUpgrade);
}
for (int i = 0; i < availableUpgradeList.Count; i++)
{
saveData.availableUpgradeList.Add(availableUpgradeList[i]);
}
saveData.coins = coins;
BinaryFormatter bf = new BinaryFormatter();
FileStream stream = new FileStream(fileLocation02, FileMode.Create);
bf.Serialize(stream, saveData);
stream.Close();
}
}
}

There are a lot of ways to do this, but few common ones that come to mind are:
Write a method to convert one object to another (there is a lot of info about this online)
Brute force example:
var availableUpgrades = originList.Select(x => new AvailableUpgrade() { alreadyBoughtUpgradePrice = x.alreadyBoughtUpgradePrice, alredyBoughtUpgradeAmount = x.alredyBoughtUpgradeAmount, alreadyBoughtUpgradeName = x.alreadyBoughtUpgradeName}).ToList();
Use some existing mapping nuget/lib to do this

Related

NAudio SampleProvider for MuLaw encoded audio files

I have a method generating waveform data (using NAudio SampleProviders) from the audio files which was working properly till now. But today we noticed this method is generating wrong results for some specific audios. After examining I realized that the encoding of the problematic audio files was MuLaw which I didn't handle. Which sample provider should I use to properly obtain the sample values? (Btw: My project is .NET Core, so I can only use NAudio.Core)
Here is the complete method:
public async Task<string> GenerateWaveformAsync(AudioFormats format, byte[] content, int duration)
{
int samplesPerPixel = GetSamplesPerPixelFromConfig(duration);
var resultJson = string.Empty;
var waveformResult = new WaveformResult();
var waveformPointCount = 0L;
var waveformPointsAsShort = new List<short>();
var waveformPointsAsFloat = new List<float>();
try
{
_logger.LogInformation($"Waveform generation has been started.");
using (var memoryStream = new MemoryStream(content))
using (WaveStream waveReader = GetReaderStream(memoryStream, format))
{
ISampleProvider provider;
switch (waveReader.WaveFormat.Encoding)
{
case WaveFormatEncoding.Pcm:
provider = new Pcm16BitToSampleProvider(waveReader);
break;
case WaveFormatEncoding.IeeeFloat:
provider = new WaveToSampleProvider(waveReader);
break;
case WaveFormatEncoding.MuLaw:
provider = ???;
break;
default:
provider = new Pcm16BitToSampleProvider(waveReader);
break;
}
waveformResult.Bits = waveReader.WaveFormat.BitsPerSample;
waveformResult.Channels = waveReader.WaveFormat.Channels;
waveformResult.SampleRate = waveReader.WaveFormat.SampleRate;
waveformResult.SamplesPerPixel = samplesPerPixel;
var leftChannelSamples = new List<float>();
var rightChannelSamples = new List<float>();
var buffer = new float[waveReader.WaveFormat.SampleRate];
int byteCountRead;
do
{
byteCountRead = provider.Read(buffer, 0, buffer.Length);
for (var n = 0; n < byteCountRead; n++)
{
if (n % 2 == 0)
{
leftChannelSamples.Add(buffer[n]);
}
else
{
rightChannelSamples.Add(buffer[n]);
}
}
}
while (byteCountRead > 0);
var waveformPointCountDouble = (double)leftChannelSamples.Count / (double)samplesPerPixel;
waveformPointCount = (long)Math.Ceiling(waveformPointCountDouble);
var leftChannelPeaks = new List<PeakInfo>();
var rightChannelPeaks = new List<PeakInfo>();
for (var i = 0; i < waveformPointCount; i++)
{
var currentFrameLeftChannel = leftChannelSamples
.Skip(i * samplesPerPixel)
.Take(samplesPerPixel)
.ToList();
var currentFrameRightChannel = rightChannelSamples
.Skip(i * samplesPerPixel)
.Take(samplesPerPixel)
.ToList();
leftChannelPeaks.Add(new PeakInfo(currentFrameLeftChannel.Min(), currentFrameLeftChannel.Max()));
rightChannelPeaks.Add(new PeakInfo(currentFrameRightChannel.Min(), currentFrameRightChannel.Max()));
}
for (var i = 0; i < leftChannelPeaks.Count; i++)
{
waveformPointsAsFloat.Add(leftChannelPeaks[i].Min);
waveformPointsAsFloat.Add(leftChannelPeaks[i].Max);
waveformPointsAsFloat.Add(rightChannelPeaks[i].Min);
waveformPointsAsFloat.Add(rightChannelPeaks[i].Max);
}
waveformPointsAsFloat
.ForEach(f => waveformPointsAsShort.Add((short)Math.Round(f * short.MaxValue, 0)));
}
waveformResult.Length = waveformPointCount;
waveformResult.Data = waveformPointsAsShort;
var contractResolver = new DefaultContractResolver
{
NamingStrategy = new SnakeCaseNamingStrategy(),
};
resultJson = JsonConvert.SerializeObject(waveformResult, Formatting.Indented,
new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
ContractResolver = contractResolver,
});
_logger.LogInformation($"Waveform has been generated successfully.");
}
catch (Exception ex)
{
_logger.LogError($"An error has occurred while generating waveform. ({ex.Message})");
}
return resultJson;
}
private static WaveStream GetReaderStream(MemoryStream memoryStream, AudioFormats audioFormat)
{
switch (audioFormat)
{
case AudioFormats.Wav:
return new WaveFileReader(memoryStream);
case AudioFormats.Mp3:
return new Mp3FileReader(memoryStream);
default:
throw new UnsupportedAudioFormatForWaveformGenerationException();
}
}

Get Text From specific Layer from PDF

Here is the pdf sample with texts on the layer. If I turn off the layer all the text belong to this layer will be invisible also.
I need to get all the texts from the specific layer. Any body know how to archive this.
Here is my sample PDF file: https://drive.google.com/file/d/1TcRyE8MQRhw-j89BbovV7fFIwZ0yks0N/view?usp=sharing
My code can get all texts. But I don't know how to get texts belong any specific layer only.
public CreateHyperLinkButton(string inPutPDF, string outPutPDF, List<ViewPortInfo> ViewportInfos)
{
using (FileStream pdf = new FileStream(outPutPDF, FileMode.Create))
{
using (PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(inPutPDF))
{
using (PdfStamper pdfStamper = new iTextSharp.text.pdf.PdfStamper(pdfReader, pdf))
{
//Get Text list on 2D PDF
List<TextRenderInfo> listTextInfor = GetAllTextInfor(inPutPDF, pdfReader);
listTextInfor.ForEach(item =>{
string btnName = item.GetText().Trim();
//Check btnName exist in ViewportInfos
for (var i = 0; i < ViewportInfos.Count; i++)
{
string szRes = GetTextContained(ViewportInfos[i].Hyperlinks.Keys.ToList(), btnName);
if (!string.IsNullOrEmpty(szRes))
{
iTextSharp.text.Rectangle box = GetRectOfText(item);
iTextSharp.text.pdf.PushbuttonField btnField = new iTextSharp.text.pdf.PushbuttonField(pdfStamper.Writer, box, szRes);
iTextSharp.text.pdf.PdfAnnotation pushbutton = btnField.Field;
//Add JS function and button in annotation
string js = "mapView('" + szRes + "');";
pushbutton.SetAdditionalActions(iTextSharp.text.pdf.PdfName.U, iTextSharp.text.pdf.PdfAction.JavaScript(js, pdfStamper.Writer));
pdfStamper.AddAnnotation(pushbutton, 1);
}
}
});
pdfStamper.Close();
}
pdfReader.Close();
}
pdf.Close();
}
}
private static List<TextRenderInfo> GetAllTextInfor(string inPutPDF, PdfReader pdfReader)
{
List<TextRenderInfo> listTextInfor = new List<TextRenderInfo>();
TextExtractionStrategy allTextInfo = new TextExtractionStrategy();
for (int i = 1; i <= pdfReader.NumberOfPages; i++)
{
PdfTextExtractor.GetTextFromPage(pdfReader, i, allTextInfo);
}
listTextInfor = allTextInfo.textList;
return listTextInfor;
}
public class TextExtractionStrategy : ITextExtractionStrategy
{
public List<TextRenderInfo> textList = new List<TextRenderInfo>();
public void BeginTextBlock()
{
}
public void EndTextBlock()
{
}
public string GetResultantText()
{
return "";
}
public void RenderImage(ImageRenderInfo renderInfo)
{
var a = renderInfo;
}
public void RenderText(TextRenderInfo renderInfo)
{
textList.Add(renderInfo);
}
}
You could use ironpdf for this purpose. Parse/open the pdf as per the docs on their site and examine it in debug, then you can develop some code to retrieve text from that layer only.

How to fix "Value was either too large or too small for a UInt32" C#

I am trying to convert ActionScript3 code to C# that's like the main thing. However, with trying to convert one of the functions I got the error which is in the title when I was trying to convert a hexadecimal string to an int.
Basically, this code is supposed to take information for example user data and then do somethings and in the end return Base64 encoded text. The main error that I am aware of is at the part where "loc9 = Convert.ToInt32(loc8, 16);" is as that is where I am getting the error said in the title. I have tried researching similar issues others have had with something like this, but it just didn't seem the same and didn't really help me out.
(Btw I am sorry if this doesn't sound so clear, correct me or ask more questions if not understood)
Screenshot of error when called
My C# Code:
private static string hasher(string input)
{
MD5 md5 = System.Security.Cryptography.MD5.Create();
byte[] inputBytes = System.Text.Encoding.ASCII.GetBytes(input);
byte[] hash = md5.ComputeHash(inputBytes);
StringBuilder sb = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
sb.Append(hash[i].ToString("x2"));
}
return sb.ToString();
}
public static string p(string param1)
{
var loc6 = "";
var loc7 = "";
var loc8 = "";
var loc9 = 0;
var loc2 = hasher(param1);
var loc4 = 0;
MemoryStream loc0 = new MemoryStream();
var loc3 = new byte[] { };
while(loc4 < loc2.Length * 2)
{
loc6 = loc2.Substring(loc4, loc4 + 1);
loc7 = loc2.Substring(loc4 + 1, loc4 + 2);
loc8 = "0x" + loc6 + loc7;
loc9 = Convert.ToInt32(loc8, 16);
new BinaryWriter(loc0).Write(loc9);
loc4 = loc4 + 2;
}
loc0.Position = 0;
loc3 = loc0.ToArray();
return Convert.ToBase64String(loc3, 0, 16);
}
public string calculateFromNewActorCreationData(string username, string password, byte[] small, byte[] full)
{
return calculateFromStrings(username, password, small, full);
}
public string calculateFromStrings(string param1, string param2, object param3, object param4)
{
var loc5 = param1 + param2 + fromByteArray(param3 as byte[]) + fromByteArray(param4 as byte[]) + p();
return p(loc5);
}
private string fromByteArray(byte[] param1)
{
var ms = new MemoryStream(param1);
List<byte> list2 = new List<byte>();
if (param1.Length <= 20)
return HexStringFromBytes(param1);
var loc3 = new byte[] { };
var loc4 = param1.Length / 20;
var loc5 = 0;
while (loc5 < 20)
{
ms.Position = loc4 * loc5;
list2.Add(new BinaryReader(ms).ReadByte());
loc5++;
}
loc3 = list2.ToArray();
return HexStringFromBytes(loc3);
}
private static string HexStringFromBytes(byte[] bytes)
{
var sb = new StringBuilder();
foreach (byte b in bytes)
{
var hex = b.ToString("x2");
sb.Append(hex);
}
return sb.ToString();
}
private string p()
{
MemoryStream stream = new MemoryStream();
new BinaryWriter(stream).Write(120);
new BinaryWriter(stream).Write(-38);
new BinaryWriter(stream).Write(99);
new BinaryWriter(stream).Write(16);
new BinaryWriter(stream).Write(32);
new BinaryWriter(stream).Write(51);
new BinaryWriter(stream).Write(41);
new BinaryWriter(stream).Write(-110);
new BinaryWriter(stream).Write(12);
new BinaryWriter(stream).Write(50);
new BinaryWriter(stream).Write(81);
new BinaryWriter(stream).Write(73);
new BinaryWriter(stream).Write(49);
new BinaryWriter(stream).Write(-56);
new BinaryWriter(stream).Write(13);
new BinaryWriter(stream).Write(48);
new BinaryWriter(stream).Write(54);
new BinaryWriter(stream).Write(54);
new BinaryWriter(stream).Write(14);
new BinaryWriter(stream).Write(48);
new BinaryWriter(stream).Write(46);
new BinaryWriter(stream).Write(2);
new BinaryWriter(stream).Write(0);
new BinaryWriter(stream).Write(45);
new BinaryWriter(stream).Write(-30);
new BinaryWriter(stream).Write(4);
new BinaryWriter(stream).Write(-16);
stream.Position = 0;
return Encoding.UTF8.GetString(stream.ToArray());
}
ActionScript3 Code:
private static function p(param1:String) : String
{
var _loc6_:String = null;
var _loc7_:String = null;
var _loc8_:String = null;
var _loc9_:int = 0;
var _loc2_:String = MD5.hash(param1);
var _loc3_:ByteArray = new ByteArray();
var _loc4_:int = 0;
while(_loc4_ < _loc2_.length * 2)
{
_loc6_ = _loc2_.slice(_loc4_,_loc4_ + 1);
_loc7_ = _loc2_.slice(_loc4_ + 1,_loc4_ + 2);
_loc8_ = "0x" + _loc6_ + _loc7_;
_loc9_ = int(_loc8_);
_loc3_.writeByte(_loc9_);
_loc4_ = _loc4_ + 2;
}
_loc3_.position = 0;
var _loc5_:Base64Encoder = new Base64Encoder();
_loc5_.encodeBytes(_loc3_,0,16);
return _loc5_.toString();
}
public function calculateFromNewActorCreationData(param1:NewActorCreationData, param2:ByteArray, param3:ByteArray) : String
{
return this.calculateFromStrings(param1.ChosenActorName,param1.ChosenPassword,param2,param3);
}
public function calculateFromStrings(param1:String, param2:String, param3:Object, param4:Object) : String
{
var _loc5_:String = param1 + param2 + this.fromByteArray(param3) + this.fromByteArray(param4) + this.p();
return p(_loc5_);
}
private function fromByteArray(param1:Object) : String
{
if(param1 == null)
{
return "";
}
var _loc2_:int = 20;
if(param1.length <= _loc2_)
{
return Hex.fromArray(param1 as ByteArray);
}
var _loc3_:ByteArray = new ByteArray();
var _loc4_:int = param1.length / _loc2_;
var _loc5_:int = 0;
while(_loc5_ < _loc2_)
{
param1.position = _loc4_ * _loc5_;
_loc3_.writeByte(param1.readByte());
_loc5_++;
}
return Hex.fromArray(_loc3_);
}
private function p() : String
{
var _loc1_:ByteArray = new ByteArray();
_loc1_.writeByte(120);
_loc1_.writeByte(-38);
_loc1_.writeByte(99);
_loc1_.writeByte(16);
_loc1_.writeByte(12);
_loc1_.writeByte(51);
_loc1_.writeByte(41);
_loc1_.writeByte(-118);
_loc1_.writeByte(12);
_loc1_.writeByte(50);
_loc1_.writeByte(81);
_loc1_.writeByte(73);
_loc1_.writeByte(49);
_loc1_.writeByte(-56);
_loc1_.writeByte(13);
_loc1_.writeByte(48);
_loc1_.writeByte(54);
_loc1_.writeByte(54);
_loc1_.writeByte(14);
_loc1_.writeByte(48);
_loc1_.writeByte(46);
_loc1_.writeByte(2);
_loc1_.writeByte(0);
_loc1_.writeByte(45);
_loc1_.writeByte(-30);
_loc1_.writeByte(4);
_loc1_.writeByte(-16);
_loc1_.uncompress();
_loc1_.position = 0;
return _loc1_.readUTF();
}
What I am expecting in the end is to be able to call the function having the returned Base64 encoded data show in a MessageBox (using messagebox as a test) instead of any errors popping up.
P.S - Besides the main problem I am having with this code, I also feel like the other functions I had converted aren't perfect or just might not be the same. So, if my main problem can be solved, if someone can also double check the other functions of my code make sure they are accurate that would be amazing and thanks in advance.
Looking at this overall, it appears the AS3 code is attempting to convert the MD5.hash result into a Base64 encoded string in the worst way possible (I believe it can be done in one line.)
So, instead of copying all the code to translate the hash to a hex string only to poorly translate it back to a binary array, just use the C# result which is already a binary array directly:
public static string p(string param1) {
byte[] loc3 = System.Security.Cryptography.MD5.Create().ComputeHash(System.Text.Encoding.ASCII.GetBytes(param1));
return Convert.ToBase64String(loc3, 0, 16);
}

There was an error reflecting type 'MAH.Tools.LicenseModel.CustomerLicense'

I have this methods in my License Class as shown below.
public void CreateTestLincense(LicenseModel.CustomerLicense objData)
{
string data = CreateXML(objData);
File.WriteAllText(licensePath, data);
}
private string CreateXML(Object YourClassObject)
{
XmlDocument xmlDoc = new XmlDocument();
XmlSerializer xmlSerializer = new XmlSerializer(YourClassObject.GetType());
using (MemoryStream xmlStream = new MemoryStream())
{
xmlSerializer.Serialize(xmlStream, YourClassObject);
xmlStream.Position = 0;
xmlDoc.Load(xmlStream);
return xmlDoc.InnerXml;
}
}
But I'm trying to save the xml after passing its properties.
CustomerLicense custLic = new CustomerLicense();
custLic.CustomerId = 1;
custLic.Names = "David Okwudili";
custLic.Email = "michealdavid910#yahoo.com";
custLic.Phone = "09089786756";
custLic.ExpiringDate = DateTime.Now;
custLic.Serial = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
//Create XML Documant
MAH.Tools.Licensing.License lic = new MAH.Tools.Licensing.License(true);
lic.CreateTestLincense(custLic);
But it has been throwing an exception 'There was an error reflecting type' from XmlSerializer xmlSerializer = new XmlSerializer(YourClassObject.GetType());.
Please i need help, Thanks.

How to fill dictionary from wcf ksoap2 response

I have a wcf ksoap2 service that returns Dictionary<ArrayList, List<byte[]>>. Now at android side I want to fill my Dictionary<String[], ArrayList<Object>> diction; from wcf response. I am new to wcf and android/java, I don't have idea how to do this. Please provide me some better example of filling Dictionary with wcf.
Thanks in advance
This is my wcf code
public Dictionary<ArrayList, List<byte[]>> getImages()
{
Dictionary<ArrayList, List<byte[]>> image_Name = new Dictionary<ArrayList, List<byte[]>>();
DirectoryInfo directoryInfo = new DirectoryInfo(#"C:\Users\Yakhtar\Desktop\abc");
arr1 = new ArrayList();
foreach (FileInfo fi in directoryInfo.GetFiles())
arr1.Add(fi.FullName);
list = new List<byte[]>();
for (int i = 0; i < arr1.Count; i++)
{
img = Image.FromFile(arr1[i].ToString());
ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
list.Add(ms.ToArray());
}
image_Name.Add(arr1, list);
//image_Name[arr1 as ArrayList] = [list as byte[]];
return image_Name;
}
Well I am not sure about that but have you thought about JSON parsing instead of ksoap2 ??
Here is a tutorial on how to work with array of complex objects with KSOAP. I found out by countless hours of debugging. Hope this hepls
also try this
SoapObject countryDetails = (SoapObject)envelope.getResponse();
System.out.println(countryDetails.toString());
ArrayList list = new ArrayList(countryDetails.getPropertyCount());
lv_arr = new String[countryDetails.getPropertyCount()];
for (int i = 0; i < countryDetails.getPropertyCount(); i++) {
Object property = countryDetails.getProperty(i);
if (property instanceof SoapObject) {
SoapObject countryObj = (SoapObject) property;
String countryName = countryObj.getProperty("countryName").toString();
list.add(countryName );
}
}
Do something like this..
list = new List<byte[]>();
for (int i = 0; i < arr1.Count; i++)
{
img = Image.FromFile(arr1[i].ToString());
ms = new MemoryStream();
img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
list.Add(ms.ToArray());
}
image_Name.Add(arr1, list);
//image_Name[arr1 as ArrayList] = [list as byte[]];
return image_Name;
}

Categories