lunes, 4 de mayo de 2015
Descripcion Clases dll Utilitats
Enumerador (abstract) (tengo que decir que se ha adaptado el codigo de una pagina web para hacerlo generico que ese ha sido mi unico trabajo y bueno hacer que se use el campo unico para comparar los elementos.)
Es una clase Generica que sirve para crear enumeraciones heredando de ella.
La clase hija solo tiene que incluir los elementos que tinen que aparecer en la enumeracion como objetos staticos readonly.rAdemás tiene que incluir un constructor sin parametros publico(se usa en metodos para reflaxion y poder obetener la lista de objectos static readonly de la clase).Lo que tiene de particular es que para comparar se usa el valor Key que debe ser IComparable (así no tienen que ser estrictamente string,valor puede ser int,double,u una clase IComparable.
La idea es que una enumeracion pueda ser mas flexible y poder admitir clases hechas por nosotros.
De esta clase Enumerador se derivan unas cuantas para poder facilitar su uso como
Enumerador sirve para usar nuestras clases.
Enumerador sirve como una Enumeracion enum pero se comparar por la string en vez del int...
Imagen con ruta
Es una clase que carga solo las imagenes una vez y si se necesita otra vez la obtiene desde un diccionario(eviatando acceder a la memoria del disco que es mas lenta) tambien se puede quitar de la memoria una imagen en particular o todas (para aliviar la Ram) y cuando se necesite se vuelve a cargar. En caso de que la ruta no tenga una imagen compatible con Bitmap o no exista se pondra una imagen (new Bitmap(1,1) para evitar problemas (estaba por poner null pero creo que puede dar menos problemas poner una imagen que null...)
Lista
es una List y lo que tiene es que es multithread asi se evitan problemas al usarla con threads.Lo que tiene de particular es que si la clase implementa IClaveUnicaPorObjeto la busqueda de los objetos para saber si existen o si se contien tiene la misma potencia que un diccionario Hash.Sino usa el metodo de List Contains(T).Como curiosidad tiene metodos usado en Stack como Peek,Pop y Push para poder usarlos si tenemos esa necesidad...
ListaOrdenada
es una SortedList que es multithread (como Lista).Tiene de particular que si Tkey implementa Icomparable y Tvalue implementa IClaveUnicaPorObjecto se puede usar el mismo objecto Tvalue para obtener la clave y así facilita el metodo de añadir...por otro lado si no se implementa el metodo para añadir devuelve false para decir que no es compatible con el sistema...
TwoKeysList
Sirve para poder asignar a un objeto dos llaves unicas.
Yo lo he usado para tener una lista de NombresDeArchivos,HashDelArchivo y el archivo podia obetener así el objeto con el hash o con su ruta y podia obtener la otra llave con la otra.Tambien se puede obtener una Array KeyValuePair, KeVayluePair y KeyValuePair o con sus valores por separado Key1[],Key2[],Value[]
El GetEnumerator devuelve KeyValuePair,Value>
MiRandom
Es una clase estatica simple para olvidarse de hacer new Random para obtener un numero aleatorio.(lo veo mas practico que crear un objeto...)
Pila
Es una Stack que es multithread.
PointZ
sirve para representar puntos en coordenadas x,y,z y ademas implementa la interficie IComparable para poder ser usado en diccionarios.
text
Viene a sustituir la clase string por rendimiento ya que guarda el texto en un StringBuilder haciendo que sea muy rapido.Ademas cuenta con conversiones implicitas para concatenar facilmente y no es necesario hacer new de la clase ya que convierte implicitamente string a text y al reves. ademas implementa metodos de StringBuilder y String ademas de los propios que he ido desarroyando a medida que he ido necesitando.
MiPool
Es una clase que se usa para hacer en subprocesos unas faenas lo que tiene de especial es que tiene varias formas de ser usado y utiliza delegados para hacer la faena.
Tiene dos formas de usarse una es usando un objeto MiPool el qual se le añade una faena o una pila de faena a hacer usando un metodo entonces hace cada faena en un thread diferente y usa el metodo pasado como delegado la faena son los objetos para tratar.Tiene un maximo de threads que se puede cambiar para usar mas o menos la ponencia de la cpu. Yo lo use para escanear los directorios de las unidades pasadas como faena :)
El segundo metodo es de forma estatica y usa Tiket para hacer referencia a una sola faena y con ese tiket se puede gestionar la tarea pudiendo abortar en cualquier momento su ejecucion.Se puede incluso esperar a que esa tarea se haya realizado o solo esperar un tiempo determinado y luego continuar (así se puede abortar la espera de forma automatica) tambien se puede abortar su espera desde otro hilo.
Tambien tiene un maximo de faenas haciendose a la vez.
Tiene una variate generica para que el metodo que se pase tenga como objeto pasado por parametro el tipo que deseamos (para evitar castings y poder aumentar su comprension).
Lo mejor es que se pueden usar metodos anonimos como delegado teniendo la ventaja que se pueden usar las variables del metodo, las del objeto y de la clase.
DiscoLogico Es una clase que permite obtener los archivos y carpetas de una unidad ademas si quieres puedes suscribirte a eventos estaticos para saber si la unidad se pierde (se desconecta) o si encuentra alguna mientras escanea.Es util para tener una lista de unidades al dia sin tener que preocuparse por tener o no todas o si hay alguna que no esta actualmente...
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario