データを必要とするクラスがあります。これは、バイトまたはファイルパスとして指定できます。
現時点では、ファイルをバイト配列に読み取ってから、クラスをセットアップします。また、別のセパレーターでは、パラメーターとして渡されたバイトから直接クラスを設定します。
最初のコンストラクター (ファイル パス) で 2 番目のコンストラクター (バイト) を呼び出すには、次のようにします。
public DImage(byte[] filebytes) : this()
{
MemoryStream filestream = null;
BinaryReader binReader = null;
if (filebytes != null && filebytes.Length > 0)
{
using (filestream = new MemoryStream(filebytes))
{
if (filestream != null && filestream.Length > 0 && filestream.CanSeek == true)
{
//do stuff
}
else
throw new Exception(@"Couldn't read file from disk.");
}
}
else
throw new Exception(@"Couldn't read file from disk.");
}
public DImage(string strFileName) : this()
{
// make sure the file exists
if (System.IO.File.Exists(strFileName) == true)
{
this.strFileName = strFileName;
byte[] filebytes = null;
// load the file as an array of bytes
filebytes = System.IO.File.ReadAllBytes(this.strFileName);
//somehow call the other constructor like
DImage(filebytes);
}
else
throw new Exception(@"Couldn't find file '" + strFileName);
}
では、最初のコンストラクターを (コードのコピーと貼り付けを節約するために) 2 番目のコンストラクターから呼び出すにはどうすればよいでしょうか?