En algún que otro desarrollo sobre Compact Framework, y también sobre otras plataformas, necesitamos ejecutar código en función de si estamos en tiempo de diseño o en tiempo de ejecución. En el siguiente ejemplo se muestra como podía realizar esta tarea.
public class Helper
{
/// <summary>
/// La aplicacion esta en tiempo de diseño
/// </summary>
public static bool IsDesignTime
{
get
{
//Comprobamos el Key Token del assembly en el que esta
//contenido el Tipo Int32 y verificamos que es el correspondiente
// a mscorlib para .NET Framework
Assembly msCorLib = typeof(Int32).Assembly;
if (msCorLib != null)
//Comprobamos el Key Token
return (msCorLib.FullName.IndexOf("B77A5C561934E089") != -1) ? true : false;
return false;
}
}
/// <summary>
/// La aplicacion esta en tiempo de ejecucion
/// </summary>
public static bool IsRuntime
{
get
{
//Comprobamos el Key Token del assembly en el que esta
//contenido el Tipo Int32 y verificamos que es el correspondiente
// a mscorlib para .NET Compact Framework
Assembly msCorLib = typeof(Int32).Assembly;
if (msCorLib != null)
return (msCorLib.FullName.IndexOf("969DB8053D3322AC") != -1) ? true : false;
return false;
}
}
}
La idea consiste en verificar el PublicKeyToken del ensamblado que contiene al tipo Int32, dependiendo de este PublicKeyToken podremos verificar si estamos trabajando con mscorlib de .NET Framework o mscorlib de .NET Compact Framework.
Espero que le saqueis provecho…
Saludos
Unai Zorrilla Castro