¿Cuál es la mejor manera de crear un clon de un DTO? No hay una interfaz ICloneable o una clase BinaryFormatter en Silverlight. ¿Es la reflexión la única manera?¿Cuál es la mejor forma de clonar un objeto comercial en Silverlight?
Respuesta
Este es el código que ideamos para la clonación. Esto funciona en Silverlight 2 & 3.
Public Shared Function Clone(Of T)(ByVal source As T) As T
Dim serializer As New DataContractSerializer(GetType(T))
Using ms As New MemoryStream
serializer.WriteObject(ms, source)
ms.Seek(0, SeekOrigin.Begin)
Return DirectCast(serializer.ReadObject(ms), T)
End Using
End Function
Creo que la funcionalidad de clonación estándar se dejó de lado para mantenerla simple y ligera. Sin embargo, creo que podría usar la serialización JSON o XML para lograr lo mismo. Sin embargo, no estoy seguro acerca de los costos de rendimiento.
Cómo crear el clon si mi fuente es IEnumerable. Este LayerDto también tiene algún tipo de objeto (por ejemplo, MetaItemDto).
Código:
LayerDto clase pública {}
MetaItemDtoList clase pública: System.Collections.ObjectModel.ObservableCollection {}
público Clone IEnumerable estática (fuente IEnumerable)
{
IEnumerable<LayerDto> layers;
DataContractSerializer serializer = new DataContractSerializer(typeof(IEnumerable<LayerDto>));
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, source);
ms.Seek(0, SeekOrigin.Begin);
//return (IEnumerable<LayerDto>)serializer.ReadObject(ms);
layers = (IEnumerable<LayerDto>)serializer.ReadObject(ms);
return layers;
}
}
pero el problema al que me enfrento es que esa capa no muestra sus metaItems (para cada capa).
ICloneable no está disponible en Silverlight 4 (no sé acerca de 1/2/3 o la próxima versión). Se elimina de las API públicas de Silverlight 4. Ayuda del código de Mike Schall; está trabajando para mí.
public LayerDto Clone(LayerDto source)
{
DataContractSerializer serializer = new DataContractSerializer(typeof(LayerDto));
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, source);
ms.Seek(0, SeekOrigin.Begin);
return (LayerDto)serializer.ReadObject(ms);
}
}
- 1. ¿Cuál es la mejor forma de clonar/copiar un array observable en knockoutJS?
- 2. ¿Cuál es la mejor firma para clonar() en C++?
- 3. ¿Cuál es la forma más fácil de clonar (copiar) un objeto Scala mutable?
- 4. ¿Cuál es la mejor forma de detectar la inactividad del usuario en una aplicación Silverlight?
- 5. ¿Cuál es la mejor manera de clonar/duplicar un proyecto en un nuevo con git?
- 6. ¿Cuál es la mejor manera de clonar un objeto de evento de JavaScript para que pueda volver a enviarse?
- 7. ¿Cuál es el mejor sustituto de FlowDocument en Silverlight?
- 8. ¿Cómo "clonar" un objeto en un objeto de subclase?
- 9. ¿La mejor manera de clonar observables?
- 10. ¿Cuál es la mejor forma de convertir un objeto Datetime de zope en un objeto datetime de Python?
- 11. ¿Cuál es la mejor forma de clonar/copiar en profundidad un diccionario genérico .NET <string, T>?
- 12. cómo clonar un objeto en Android?
- 13. AS3 - Clonar un objeto
- 14. Objeto comercial Diseño DAL
- 15. ¿Cuál es la mejor forma de convertir ByteString en Int?
- 16. ¿Cuál es la mejor forma de generar rangos en MYSQL?
- 17. ¿Cuál es la mejor forma de formatear C# en WordPress?
- 18. ¿Cuál es la forma más directa de clonar un repositorio vacío, * bare * git?
- 19. Cómo puedo clonar un objeto JAXB
- 20. ¿Cuál es la forma correcta/correcta de probar si un objeto es un objeto jQuery en javascript?
- 21. ¿Qué significa clonar() un objeto?
- 22. ¿Cuál es la mejor manera de convertir un objeto proxy EF en el objeto POCO original?
- 23. ¿Cuál es la mejor forma de normalización de Unicode?
- 24. ¿Cuál es la mejor forma de solucionar un error en objc_msgSend?
- 25. ¿Cuál es la mejor forma de precompilar JSP con Ant
- 26. ¿Cuál es la mejor forma de analizar cadenas?
- 27. ¿Cuál es la mejor forma de distribuir aplicaciones Java?
- 28. ¿Cuál es la mejor forma de heredar del objeto JavaScript nativo? (Especialmente cadena)
- 29. ¿Cuál es la mejor forma de organizar el código?
- 30. ¿Cuál es la mejor forma de usar NLog con MEF?
¿Desea utilizar esta funcionalidad de clonación en el lado del servidor o en el lado de Silverlight? O ambos lados? –