viernes, marzo 30, 2007

Otro uso de las partial classes

Se puede utilizar una partial class para definir que una clase implementa una interface en un lugar y en otro no.
Esto puede ser util, por ejemplo, para cambiar el comportamiento de las clases generadas por el Visual Studio (ej, los proxys de Web Services) y no perder dichos cambios al momento de regenerar la clase

Un uso interesante es el de crear stubs de WebServices, para ello basta con crear la interface a partir del proxy generado por VS (por medio de refactoring es muy simple hacerlo) y, en una partial class, definir que dicha clase implementa la interfaz. Esto hace que el proxy generado sea una implementacion posible de la interfaz y se puede definir otra implementación para crear el stub.

jueves, marzo 29, 2007

Detalle en la creacion de ConfigurationSections

Cuando se crea una clase que herede de ConfigurationSection para manejar configuracion customizada, se debe tener cuidado con el nombre de las propiedades que se quieren mapear entre la clase y el archivo de configuracion.

El nombre de atributo utilizado en el archivo y en la clase deben ser exactamente iguales, sino da error al leer la section

Ejemplo:
En el archivo:

param1="2" />

En la clase:

[ConfigurationProperty("param1", IsRequired = true)]
public string Parametro1
{
set { this["param1"] = value; }
get { return (string)this["param1"]; }
}

Esto no es necesariamente intuitivo al leer la documentación.

Etiquetas:

viernes, marzo 16, 2007

Machetes varios

En esta página juntaron machetes de todo tipo y lenguaje...

Ojalá la mantengan actualizada.

Etiquetas:

jueves, marzo 15, 2007

Correr una aplicacion .NET en COM+

Para poder ejecutar una aplicacion.NET en el entorno COM+ se deben cumplir ciertos requisitos que están documentadas (ver Mocosoft ) pero se pueden producir mas errores siguiendo esas instrucciones.

Concretamente, me crucé con que el assembly no se registra en COM+ al compilar a no ser que tenga un strong name y además, al menos una clase que sea visible desde COM.
Para mostrarla a COM, se agrega el atributo ComVisible(true) en la cabecera de la clase, quedando así:

[Transaction(TransactionOption.Required), ComVisible(true)]
public class myNiceClass()
......



Medio molesto y no muy documentado.

Etiquetas: ,

jueves, marzo 01, 2007

Equivalencia entre tipos SQL Server y .NET Framework

Esta es la lista (incompleta) de equivalencias de tipos:


SQL Server data type CLR data type (SQL Server) CLR data type (.NET Framework)
binary SqlBytes, SqlBinary Byte[] (byte[])
bit SqlBoolean Boolean (bool)
tinyint SqlByte Byte (byte)
smallint SqlInt16 Int16 (short)
int SqlInt32 Int32 (int)
bigint SqlInt64 Int64 (long)
smallmoney SqlMoney Decimal (decimal)
money SqlMoney Decimal
numeric SqlDecimal Decimal
decimal SqlDecimal Decimal
real SqlSingle Single (float)
float SqlDouble Double (double)
smalldatetime SqlDateTime DateTime
datetime SqlDateTime DateTime


La lista completa está en Mocosoft

Etiquetas: