EPT Protocol

JBin.dll

Librería para .NET

AG
IONet
JBin
.NET Framework 4.0.0
Publicado: Enero de 2020
Espacio de nombres: Jbin
Ensamblado: jbin.dll
Instancia que serializa y deserializa datos binarios.
Ejemplo
Creamos una pequeña aplicación que gestiona una lista de contactos y la salvaremos en un archivo binario.
Consta de una clase con los datos de un cliente, una clase con la colección de clientes y los métodos para manejarlos y un form para interactuar con los datos.

Class Client

public class Client
{
    int _ID;
    public int ID {
        get{ return _ID;}
        set{_ID = value;}
    }
    string _Name;
    public string Name{
        get{return _Name;}
        set{_Name = value;}
    }
    string _Email;
    public string Email{
        get{return _Email;}
        set{_Email = value;}
    }
    string _Mobile;
    public string Mobile{
        get{return _Mobile;}
        set{_Mobile = value;}
    }
    DateTime _Birthdate;
    public DateTime Birthdate{
        get{return _Birthdate;}
        set{_Birthdate = value;}
    }
    Color _HairColor;
    public Color HairColor{
        get{return _HairColor;}
        set{_HairColor = value;}
    }
    string _Country;
    public string Country{
        get{return _Country;}
        set{_Country = value;}
    }
    string _Address;
    public string Address{
        get{return _Address;}
        set{_Address = value;}
    }
    string _Details;
    public string Details{
        get{return _Details;}
        set{_Details = value;}
    }
}

La clase que contiene la colección de clientes, con los métodos para añadir y eliminar clientes, y un contador de registros.
Class Clients

public class Clients
{
  public Client[] Item;

  int newCount;
  public int CountClient{
      get{
          if ((Item == null)){
              newCount = 0;
          }else{
              newCount = Item.Length;
          }
          return newCount;
      }
  }

  public int AddClient(Client newCl){
      if ((newCl == null)){
          return -1;
      }

      int MaxFiles;
      if ((Item == null)){
          MaxFiles = 0;
      }else{
          MaxFiles = Item.Length;
      }

      Array.Resize(ref Item, MaxFiles +1 );
      Item[MaxFiles] = new Client();
      Item[MaxFiles] = newCl;
      return 0;
  }

  public void RemoveClient(int Index){
      if ((Item == null)){
          return;
      }

      if ((Index < 0)){
          return;
      }

      if ((Index > (Item.Length - 1))){
          return;
      }

      for (int x = (Index + 1); (x <= (Item.Length - 1)); x++){
          Item[x - 1] = Item[x];
      }
      Array.Resize(ref Item, Item.Length - 2);
  }
}

Construimos un método para añadir clientes a la colección.
Método para añadir un nuevo cliente de un formulario.

private void AddNewClient()
{
	Client newCl = new Client();

	newCl.ID = Convert.ToInt16(txtID.Text);
	newCl.Name = txtName.Text;
	newCl.Email = txtEmail.Text;
	newCl.Mobile = txtMobile.Text;
	newCl.HairColor = lblColor.BackColor;
	newCl.Birthdate = DateTimePicker1.Value;
	newCl.Address = txtAddress.Text;
	newCl.Country = txtCountry.Text;
	newCl.Details = txtDetails.Text;

	myClients.AddClient(newCl);

}

Construimos otro método para eliminar un cliente de la colección.
Método para eliminar un cliente de la colección.

private void RemoveClient(Integer IndexCliente)
{
    if ((IndexCliente == -1))
    {
        return;
    }

    if ((myClients.CountClient == 0))
    {
        return;
    }

    string message = "Delete client?";
    string caption = "Delete Item";
    MessageBoxButtons buttons = MessageBoxButtons.YesNo;
    DialogResult result;
    result = MessageBox.Show(message, caption, buttons);
    if (result == System.Windows.Forms.DialogResult.Yes)
    {
        myClients.RemoveClient(IndexCliente);
        if ((myClients.CountClient == 0))
        {
            IndexCliente = -1;
            ViewClient(IndexCliente);
        }
        else if ((IndexCliente
                    > (myClients.CountClient - 1)))
        {
            IndexCliente = (myClients.CountClient - 1);
        }

        ViewClient(IndexCliente);
    }

    StatusForm = Status.View;
    RefrehsStatus();
}