おそらく最も簡単な方法は次のとおりです。
TextBox New = new TextBox {
Size = Old.Size,
Location = Old.Location,
Multiline = Old.Multiline
};
これが多くのことを行う必要がある場合は、同じことを行う拡張メソッドを作成できます。
public static class TextBoxExtensions {
public static TextBox Copy(this TextBox textBoxToCopy) {
var copiedTextBox = new TextBox {
copiedTextBox = textBoxToCopy.Size,
copiedTextBox = textBoxToCopy.Location,
copiedTextBox = textBoxToCopy.Multiline
};
}
}
使用法:
var copyOfOld = Old.Copy();
コピーするプロパティをさらに追加する場合は、AutoMapper を使用して、TextBox と TextBox の間のマップを定義することを検討します。そのパスに興味がある場合は、お知らせください。サンプルを投稿します。
これはワンライナーになりますが、AutoMapper への依存が必要ですが、NuGet で利用できます: http://nuget.org/packages/AutoMapper/2.2.0
まず、AutoMapper に依存します。
プロジェクトのどこかにマッピングを定義します。
Mapper.CreateMap<TextBox, TextBox>();
使用法:
var newTextBox = Mapper.Map<TextBox, TextBox>(Old);
または、それを詰め込みたいインスタンスが既にある場合は、次のようにします。
Mapper.Map(Old, newTextBox);
私の知る限り、組み込みの1行のソリューションはないため、拡張メソッドであるか、AutoMapperに依存しています。拡張メソッドはそのようにする必要はありません。リフレクションまたはその他の選択肢を使用できます。
私はほぼすべてのプロジェクトで AutoMapper を使用していますが、非常に貴重です。
マップ定義で多くのマッピングを定義すると、すべてのコピーが 1 つのライナーになります。まあ、定義に加えて:)