Ver por etiquetas

Todas las etiquetas » .net (RSS)
Bueno… veamos un post rapidito. En un proyecto en el que he participado hemos estado personalizando Visual Studio a través de varios custom editors, plugins, packages y demás fauna que pulula por la selva de extensibilidad de Visual Studio. Estos editores, addines y demás necesitaban acceder a información de Reflection de la propia DLL que se estaba compilando. Teóricamente obtener la información es muy sencillo. Basta con obtener la ruta a la DLL que se está compilando: private static EnvDTE. DTE...
Saludos a todos! Tanto a los que estéis trabajando, cómo aquellos que estando de vacaciones seais tan frikis que leais geeks.ms! :) Hoy quiero hablar un poco sobre bool . Puede parecer un tipo de datos aburridote: a fin de cuentas sólo puede tener dos valores, pero precisamente ahí radica su gracia y de eso os quería contar. La idea del post es muy simple: bool es sólo para true/false . Por ejemplo, en los arcanos tiempos en que un servidor usaba Visual C++ 6 para el desarrollo de aplicaciones windows...
14 comment(s)
Archivado en: ,
Sí, ya sé: estamos en Agosto y lo que más seduce ahora mismo es darse un bañito en la playa y salir de copas a rebentar los mojitos del bar, así que los que podáis hacedlo sin dudar… Total, este post tampoco se largará a ninguna parte luego… :) Los que no estéis de vacaciones o bien prefiráis leer geeks.ms en pleno Agosto (hay de todo en la viña del señor) a ver que os parece este post… es mi opinión sobre el uso que se da a los atributos y los “problemas” que a mi parecer conlleva dicho uso. Dado...
2 comment(s)
Archivado en: ,
Ole! Vaya título tan imperativo me ha salido, eh??? Un post cortito para comentar un problemilla que hemos tenido en casa de un cliente, y que al final era debido por no usar interfaces (en nuestro caso interfaces COM). El problemilla… En todos los ordenadores de desarrollo el sistema funcionaba perfectamente (como siempre… en mi máquina funciona! ). En los ordenadores de prueba el sistema daba error, concretamente se quejaba que no encontraba el ensamblado mshtml.dll. Nosotros usábamos una referencia...
con no comments
Archivado en:
El otro día, Oren Eini (aka Ayende ) escribió en su blog un post, en respuesta a otro post escrito por Phil Haack (aka Haacked ). En su post Phil mostraba un método extensor para comprobar si un IEnumerable<T> era null o estaba vacío (y sí, Phil usa Any() en lugar de Count() para comprobar si la enumeración está vacía ): public static bool IsNullOrEmpty<T>( this IEnumerable<T> items) { return items == null || !items.Any(); } Aquí tenéis el post de Phil: Checking For Empty Enumerations...
3 comment(s)
Archivado en: ,,
Leyendo este post de Gisela sobre la serialización XML me he decidido escribir este… es lo que tiene la realimentación en los blogs :) El uso de atributos que menciona Gis en su post es realmente genial. A mi me encanta: me permite definir mis clases en un momento y es muy útil cuando leemos datos xml de una fuente externa. Pero hay un detalle que puede ser un problema: El esquema XML está totalmente acoplado de la clase que tiene los datos. Si estamos leyendo de dos fuentes externas que tienen esquemas...
5 comment(s)
Archivado en: ,
Hola a todos! Un post para comentar paranoias varias sobre algo que parece tan simple como redefinir GetHashCode()… Primero las dos normas básicas que supongo que la mayoría ya conoceréis: Si se redefine el método Equals() de una clase debería redefinirse también el método GetHashCode(), para que pueda cumplirse la segunda norma que es… Si la llamada a Equals para dos objetos devuelve true , entonces GetHashCode() debe devolver el mismo valor para ambos objetos. Una forma fácil y rápida de implementar...
Hola a todos! El otro día me preguntaban sobre las diferencias entre usar var, object y dynamic, y por lo que he podido observar no todo el mundo tiene claro que diferencias hay en cada caso, de ahí que me haya decidido escribir este post. 1. Inferencia de tipos (var) Para ver el uso de var lo mejor es un ejemplo: var i = 10; // Ok int i2 = i + 1; // Ok i = "20" ; // error CS0029: Cannot implicitly convert type 'string' to 'int' string s = i; // error CS0029: Cannot implicitly...
7 comment(s)
Archivado en: ,
Hola! Un post cortito, sobre un error que me he encotrado… Al compilar un proyecto, marcado para interoperabilidad COM VS.NET se me ha quejado con el siguiente error: c:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(3019,9): error MSB3217: Cannot register assembly "C:\Teamserver\Phoenix\Refactoring\Core\DevelopmentCore-WI5825-SIO4\bin\Debug\PhoenixContainer.dll". Method 'GetDefaultIWorkspace' in type 'CaixaPenedes.Phoenix.Core.CompositeUI.ShellUserControl'...
con no comments
Archivado en:
Una capacidad de la que no se habla mucho es de TxF, que apareció junto con Vista: es la capacidad de tener transacciones sobre ficheros NTFS. Esas transacciones pueden afectar a uno o a varios ficheros… y no solo eso: gracias al poder de DTS podemos coordinar una transaccion TxF con otros tipos de transacciones como SQL Server o MSMQ! Como pasa con muchas de las características avanzadas de windows, sólo se puede usar en .NET a través de p/invoke (si obviamos C++/CLI claro)… vamos a ver un ejemplo...
1 comment(s)
Archivado en: ,
Te has preguntado alguna vez la diferencia de rendimiento que pueda haber entre el método extensor Count() proporcionado por LINQ y la propiedad Count de la interfaz IList<T>. Es decir dado el siguiente código: List< int > lst = new List< int >(); // Añadimos ints a la lista... // Qué es más rápido? var count = lst.Count; var count2 = ((IEnumerable< int >)lst).Count(); A veces hacemos suposiciones sobre como funciona LINQ to objects. Uno puede pensar que el método Count()...
2 comment(s)
Archivado en:
Buenas! Como prometí en el post anterior sobre el CodeCamp , en mi charla sobre Code Contracts, quedaron por ver algunos temillas que aprovecho para comentar ahora. Pruebas Unitarias Primero remarcar que no realiceis pruebas unitarias para validar que vuestros contratos están bien, es decir, si teneis un método: public void Foo( int arg) { Contract.Requires(arg > 0); } No hagáis una prueba unitaria que compruebe que el contracto falla si se le pasa cero a arg. ¿Por...
con no comments
Archivado en: ,
Hola a todos! En el post anterior os comenté algunas cosillas sobre STM.NET, un “experimento” de los DevLabs de Microsoft para introducir conceptos transaccionales dentro de .NET. En este segundo post quiero extenderme un poco más con algunos ejemplos un pelín más elaborados. Ejemplo 3 En el ejemplo 2 (del post anterior) vimos como lanzar una excepción dentro de una transacción definida por Atomic.Do() hacía un rollback de todos los cambios...
con no comments
Archivado en:
Uno de los retos más importantes a los que se enfrenta en breve el desarrollo de aplicaciones tiene que ver con la programación paralela. Ahora que se empieza a vislumbrar el acercamiento del fin de la Ley de Moore , si queremos seguir el espectacular aumento de potencia debemos irnos a entornos multi-procesador o multi-core. Hace unos años eran coto reservado a entornos de investigación, y ahora ya están encima de nuestra mesa… Hay varias visiones sobre...
3 comment(s)
Archivado en:
Hola! ¿Como ha ido el verano? A todos los que hayais disfrutado de unas buenas vacaciones, espero que os hayan sido provechosas… Pero como dicen, todo lo bueno se acaba, y toca volver al tajo. En el proyecto en el que estoy, nos hemos visto en la necesidad de comunicarnos con la ventana principal de otro proceso, realizado en Visual Basic 6. Sobre ventanas, HWNDs y demás… Los que conozcais un poco como funciona internamente Windows, podéis saltaros este apartado...
6 comment(s)
Archivado en: ,
Hola... qué tal? Imagina que en algún proyecto que estés haciendo, quieres ofrecer una combo para seleccionar colores. De acuerdo, ya se que hay otros métodos para hacer que el usuario seleccione un color, como usar el ColorDialog , pero a lo mejor te interesa que el usuario sólo pueda escoger colores de una lista predeterminada... Por suerte en .NET hacer que una combo dibuje sus elementos como nosotros queremos, es realmente simple... ¿quieres tener una...
3 comment(s)
Archivado en: ,
A veces hay aspectos de C# que no pensamos hasta que nos encontramos con ellos… A mi me pasó con un código parecido a este: class Program { static void Main( string [] args) { Baz baz = new BazDerived (); new Foo ().Bar(baz); Console .ReadLine(); } } class Foo { public void Bar<T>(T t) { Console .WriteLine( "Bar<T> typeof(T) = " + typeof (T).Name); } public void Bar( object o) { Console .WriteLine( "Bar o.GetType() = " + o.GetType().Name); } } class Baz { } class BazDerived...
4 comment(s)
Archivado en:
Imaginaos que teneis una solución con varios proyectos, y que estos compilan en un directorio concreto, llamésmole Q:\bin. En otra solución teneis varios proyectos más, con referencias a los assemblies que estan en Q:\bin (no son referencias de proyecto porque estan en distintas soluciones). Y ya puestos, imaginad también que estáis usando Code Contracts. Y cuando compilais los proyectos de la segunda solución visual studio se descuelga con un bonito error: Unresolved assembly reference not allowed...
con no comments
Archivado en:
Hola a todos… después de que Jorge (en http://geeks.ms/blogs/jorge/archive/2009/04/26/precondiciones-y-microsoft-code-contracts.aspx ) yo mismo (en http://geeks.ms/blogs/etomas/archive/2009/05/04/pexcando-errores-en-nuestro-c-243-digo.aspx ) comentasemos algo de Code Contracts, voy a comentar algunas cosillas más que me he encontrado con Code Contracts usándolos en un proyecto real. Aunque están en fase “beta”, la tecnología está lo suficientemente...
2 comment(s)
Archivado en:
Que XmlSerializer es una clase curiosa es evidente, hay multitud de maneras de controlar la serialización de un objeto y varios trucos más o menos ocultos (os recomiendo el blog de jmservera que tiene algunos posts interesantes)… … Lo que quiero comentaros ahora es un caso que me encontré el otro día (valeeee… ayer), en concreto con las auto-propiedades que se incorporaron en C# 3.0. En la msdn se dice que XmlSerializer es capaz de serializar propiedades ICollection o IEnumerable que sean read-only...
5 comment(s)
Archivado en:
Más artículos Página siguiente >