Que tal tengo poco codificando en C# y quisiera saber como poder clonar una colección ya que mi problema radica en que al enviarla a un formulario diferente lo que modifique en dicho formulario afecta directamente a mi colección ya que esto se hace por referencia. aki unos fragmentos de codigo antes de enviar la coleccion al formulario:
if (ctlgrdPartidasentrada.CurrentCell.OwningColumn.Name == "pMedidasPartida")
{
if (ctlgrdPartidasentrada.CurrentRow != null)
{
if (this.CrudAction == eCRUDAction.Read || this.PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida.Count <= 0)
{
if (this.PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida_Trash.Count <= 0)
//Cargo las Medidas de la partida CargarMedidasPartidasTarja(PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex]);
}
frmMedidasPartidaTarja ofrm = new
//Aqui envio mi coleccion de pMedidasPartidafrmMedidasPartidaTarja(PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida, this.CrudAction);
ofrm.ShowInTaskbar = false;
ofrm.StartPosition = FormStartPosition.CenterScreen;
if (ofrm.ShowDialog(this) == DialogResult.OK)
{
//En esta parte deberia asignar la coleccion modificada en el formulario al objeto principal PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida = ofrm.MedidasPartida;
if (ofrm.MedidasPartida_Trash.Count > 0)
PrincipalObject[ctlgrdTarjasEntrada.CurrentRow.Index].pListaPartidas[e.RowIndex].pMedidasPartida_Trash = ofrm.MedidasPartida_Trash;
}
}
}
Parte del Codigo del Formulario: #region Campos
GColeccion<MedidasPartidaTarja> _MedidasPartida;
GColeccion<MedidasPartidaTarja> _MedidasPartida_Trash;
eCRUDAction CrudAction = eCRUDAction.Read;
#endregion
#region Propiedades
public GColeccion<MedidasPartidaTarja> MedidasPartida
{
get { if (_MedidasPartida == null) _MedidasPartida = new GColeccion<MedidasPartidaTarja>(); return _MedidasPartida; }
set { _MedidasPartida = value; }
}
public GColeccion<MedidasPartidaTarja> MedidasPartida_Trash
{
get { if (_MedidasPartida_Trash == null) _MedidasPartida_Trash = new GColeccion<MedidasPartidaTarja>(); return _MedidasPartida_Trash; }
set { _MedidasPartida_Trash = value; }
}
#endregion
public frmMedidasPartidaTarja(GColeccion<MedidasPartidaTarja> value, eCRUDAction _crudValue)
{
InitializeComponent();
InitializeClass();
this.CrudAction = _crudValue;
//Aqui asigno la coleccion que recibo, "MedidasPartidas" esta declarada localmente aun asi todo lo que le modifique afecta directamente a mi coleccion principal MedidasPartida = value;
SetEnabledControl();
SetGridColums();
SetDataSource();
}
-------------------------------------------------------------------------------------------------
Nacesito saber como afectar a MedidasPartida sin que se refleje en el objeto principal, de antemano gracias por sus apoyo