Dies ist eine Funktion, die ich verwendete, um Mitglieder zwischen Modellen in ASP.NET MVC zu kopieren. Während Sie einen Code suchen, der für denselben Typ funktioniert, unterstützt dieser Code auch andere Typen mit denselben Eigenschaften.
Es verwendet Reflexionen, aber in einer saubereren Art und Weise. Vorsicht vor der Convert.ChangeType
: Sie könnten es nicht brauchen; Sie können den Typ überprüfen, anstatt ihn zu konvertieren.
public static TConvert ConvertTo<TConvert>(this object entity) where TConvert : new()
{
var convertProperties = TypeDescriptor.GetProperties(typeof(TConvert)).Cast<PropertyDescriptor>();
var entityProperties = TypeDescriptor.GetProperties(entity).Cast<PropertyDescriptor>();
var convert = new TConvert();
foreach (var entityProperty in entityProperties)
{
var property = entityProperty;
var convertProperty = convertProperties.FirstOrDefault(prop => prop.Name == property.Name);
if (convertProperty != null)
{
convertProperty.SetValue(convert, Convert.ChangeType(entityProperty.GetValue(entity), convertProperty.PropertyType));
}
}
return convert;
}
Da dies eine Erweiterung Methode ist, ist die Verwendung einfach:
var result = original.ConvertTo<SomeOtherType>();
Dies ist, was Sie suchen: [Cloning Objekte in C#] (https://stackoverflow.com/questions/ 78536/cloning-objects-in-c) –