可能是最直接的方法是這樣的:
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);
A FAIK,沒有內置的單行解決方案,因此它可以是擴展方法,也可以對AutoMapper進行依賴。擴展方法不必這樣做,您可以在那裏使用反射或其他選擇。
我在幾乎所有的項目中都使用AutoMapper,它非常寶貴。
您可以在地圖定義中定義多個映射,然後所有副本都將成爲一個內襯。那麼,除了定義:)
這就是我正在尋找的 – 2013-02-16 12:43:06
@Mahdi,這是AutoMapper的工作原理。我不會走自己的路,我會利用現有的解決方案。 – CubanX 2013-02-16 12:49:41