That was in short what was on my requirement list.
I had a few difficulties solving the problem of filling "this" and classes that fill them self in the constructor, but i finally figured it out.
public void Fill(ref object[] objCollection ...)
{
...
System.Type type = objCollection[0].GetType();
ArrayList arr = new ArrayList();
...
object baseObject;
// struct or struct[]
if(type.IsValueType)
{
baseObject = type.Assembly.CreateInstance(type.FullName);
}
// this or non serializable class
else if(arr.Count==0)
{
baseObject = objCollection[0];
}
// class or class[]
else if(type.IsSerializable)
{
Stream _stream;
BinaryFormatter _formatter = new BinaryFormatter();
try
{
_stream = File.Open("Empdata.bin",
FileMode.Create, FileAccess.Write);
_formatter.Serialize(_stream, objCollection[0]);
_stream.Close();
_stream = File.Open("Empdata.bin",
FileMode.Open, FileAccess.Read);
object _desObj = _formatter.Deserialize(_stream);
baseObject = Convert.ChangeType(_desObj, type);
_stream.Close();
}
catch(Exception e)
{
throw new Exception(type.ToString() +
" could not be serialized.", e);
}
}
else
{
throw new NotImplementedException(type.ToString() +
" is no value type and don't implements the" +
"ISerializable interface.");
}
...
arr.Add(baseObject);
...
}