Important Note
BinaryFormatter has been deprecated, and will no longer be available in .NET after November 2023. See BinaryFormatter Obsoletion Strategy
I’ve seen a few different approaches to this, but I use a generic utility method as such:
public static T DeepClone<T>(this T obj) { using (var ms = new MemoryStream()) { var formatter = new BinaryFormatter(); formatter.Serialize(ms, obj); ms.Position = 0; return (T) formatter.Deserialize(ms); } }
Notes:
- Your class MUST be marked as
[Serializable]
for this to work. - Your source file must include the following code:
using System.Runtime.Serialization.Formatters.Binary; using System.IO;
Related Posts:
- Deep cloning objects
- XmlSerializer – There was an error reflecting type
- .Net 4.8 Support for Windows 10 ends in 26 days?
- What is a NullReferenceException, and how do I fix it?
- How do I get a random YouTube video with the YouTube API?
- An existing connection was forcibly closed by the remote host
- How can I convert String to Int?
- What is a NullReferenceException, and how do I fix it?
- I am getting Failed to load resource: net::ERR_BLOCKED_BY_CLIENT with Google chrome
- IOException: The process cannot access the file ‘file path’ because it is being used by another process
- No connection could be made because the target machine actively refused it?
- Could not load file or assembly or one of its dependencies
- Error : Could not load file or assembly or one of it’s dependencies
- Priority queue in .Net
- What is the difference between int, Int16, Int32 and Int64?
- How to open .dll files to see what is written inside?
- Windows .NET API / Windows 7 / Bluetooth communication with Intel Curie Arduino / Genuino 101
- Get current folder path
- foreach vs someList.ForEach(){}
- System.web.mvc missing
- Nullable object must have a value?
- What does mscorlib stand for?
- Extension methods must be defined in a non-generic static class
- WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for jquery
- “Error while trying to run project: Unable to start program”. Can run program only once. Then VS needs restart
- Add new item in existing array in c#.net
- How to resolve this System.IO.FileNotFoundException
- What is clr.dll on .Net framework and what does it do?
- what is this oleaut32.dll?
- Associating enums with strings in C#
- How to resolve this System.IO.FileNotFoundException
- HttpWebRequest-The remote server returned an error: (400) Bad Request
- Extension methods must be defined in a non-generic static class
- How to use the “Using” statement in ASP.net razor webpages?
- How can I get the application’s path in a .NET console application?
- Reading settings from app.config or web.config in .NET
- How do I create a Shared Code project (.shproj)
- There is no argument given that corresponds to the required formal parameter – .NET Error
- How do I remedy “The breakpoint will not currently be hit. No symbols have been loaded for this document.” warning?
- Invalid URI: The format of the URI could not be determined
- Multiple file-extensions searchPattern for System.IO.Directory.GetFiles
- Could not establish trust relationship for SSL/TLS secure channel — SOAP
- Unable to read data from the transport connection : An existing connection was forcibly closed by the remote host
- How to make an HTTP POST web request
- How to add comments into a Xaml file in WPF?
- Why did I get the compile error “Use of unassigned local variable”?
- Reading CSV file and storing values into an array
- The remote server returned an error: (407) Proxy Authentication Required
- Merge two (or more) lists into one, in C# .NET
- How to open a new form from another form
- How do you sort a dictionary by value?
- EntityType has no key defined error
- HTML.ActionLink method
- Regular expression “^[a-zA-Z]” or “[^a-zA-Z]”
- How do I restart my C# WinForm Application?
- .NET graph library around?
- How to split() a delimited string to a List
- Remove element of a regular array
- Best way to reverse a string
- An object reference is required to access a non-static member
- Task vs Thread differences
- Merging two arrays in .NET
- How can I know if a process is running?
- String was not recognized as a valid DateTime ” format dd/MM/yyyy”
- Substring index and length must refer to a location within the string
- Run Command Prompt Commands
- Visual Studio keeps crashing
- How can I implement static methods on an interface?
- Catch multiple exceptions at once?
- How to delete a file after checking whether it exists
- c# Show Windows Form
- How do I exit a WPF application programmatically?
- How to convert UTF-8 byte[] to string
- The remote server returned an error: (405) Method Not Allowed. WCF REST Service
- How to play a sound in C#, .NET
- How can I delete a file that is in use by another process?
- What is a quick way to force CRLF in C# / .NET?
- How to resolve file being used by another process?
- How to enable assembly bind failure logging (Fusion) in .NET
- How to make inline functions in C#
- How to properly make a http web GET request
- Strip double quotes from a string in .NET
- Convert double to float by cast or Convert.ToSingle()?
- c# .net change label text
- How to create a new object instance from a Type
- How to avoid a System.Runtime.InteropServices.COMException?
- Using FolderBrowserDialog in WPF application
- Is there an equivalent to the C# “var” keyword in C++/CLI?
- When should I use a List vs a LinkedList
- How can I generate random alphanumeric strings?
- Sequence contains more than one element
- Playing a MP3 file in a WinForm application
- Iif equivalent in C#
- LINQ query on a DataTable
- Best way to randomize an array with .NET
- Encrypt and decrypt a string in C#?
- Unrecognized escape sequence for path string containing backslashes
- Linq: GroupBy, Sum and Count
- How to enumerate an enum
- How to set session timeout in web.config