Thomas Wölfers Baustatik-Blog

Thomas Wölfers Baustatik-Blog

Sicherheit und Windows Vista


Wenn man nur einen einzigen Artikel aus Entwicklersicht über Sicherheitsaspekte von Vista lesen will, dann sollte das der hier sein: Windows Vista Security – A Bigger Picture. Wenn man ein bisschen mehr Zeit hat, dann empfehle ich auch den: ASLR in Windows Vista und den: Alleged Bugs in Windows Vista’s ASLR Implementation.

Ein bisschen Hintergrund kann nicht schaden: Basiswissen Buffer Overflow.

Weniger aus Entwicklersicht, und mehr mit der IT-Brille betrachtet gibt es dann noch den sehr umfangreichen hier: Windows Vista Security Guide.


Der Operator ?? in C#


Habe ich heute festgestellt, hätte ich wohl schon länger wissen sollen: Der Operator ?? kann nicht nur bei nullable Types verwendet werden. Statt sowas

void foo( string v)
{
   string r = ( v == null ) ? "null" : v;
}

geht also auch einfach

void foo( string v)
{
   string r = v ?? "null";
}


Control als Bitmap


Angenommen, man benötigt das Bild eines Controls als Bitmap - also zum Beispiel ein Bitmap einer CheckBox, die als Bild in einem Dialog eingeblendet werden soll: Woher nehmen, und nicht stehlen? Ganz einfach:

         Bitmap bm = new Bitmap(30,30);
         CheckBox cb = new CheckBox();
         cb.DrawToBitmap(bm, new Rectangle(0,0,30, 30));


Managed DirectX in Windows Forms


In der aktuellen DotNetPro gibts einen Aufsatz von mir zum Thema: MDX in Windows Forms. Die Titelgeschichte basiert auf einem Programm zur Visualisierung von zweidimensionalen Formeln. (Quellcode gibts auf der Heft-CD, und, soweit ich weiss, nach einiger Zeit auch über die Webseite des Magazins.)


Properties im PropertyGrid verstecken


Manchmal möchte man das das PropertyGrid nur einige der vorhandenen Properties eines Objektes anzeigt - und zwar abhängig vom Kontext. Das ist relativ einfach, da das PropertyGrid zum ermitteln der Metadaten über eine Objektinstanz den TypeConverter des Typs der Instanz verwenden. Alles was man also tun muss, ist einen eigenen TypeConverter an den Typ zu hängen.

Hier ein extrem vereinfachtes Beispiel: Der Typ TestClass hat eigentlich ein Property, und dieses eine Property wird im Beispiel vollständig versteckt. (In der Realität wird man wohl eher ein Subset der vorhandenen Properties liefern statt einfach alle zu verstecken.)

Schritt eins: Der Typ muss mit einem TypeConverter ausgestattet werden:

[TypeConverter(typeof(TestClassConverter))]
public class TestClass
{
   [Browsable(true)]
   int Property
   {
      get
      {
         return 5;
      }
      set
      {
      }
   }
}

Schritt zwei: Der TypeConverter muss implementiert werden:

public class TestClassConverter : TypeConverter
{
   public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes)
   {
      return new PropertyDescriptorCollection(new PropertyDescriptor[] { });
   }

   public override bool GetPropertiesSupported(ITypeDescriptorContext context)
   {
     return true;
   }
}


Woran es bei bools hapert


Hier noch ein kleiner Nachtrag zu meinem Eintrag von gestern...

Es gibt noch einen offensichtlichen Grund, weshalb booleans immer einen schalen Geschmack hinterlassen, den ich gestern (offensichtlich :-) ) vergessen hatte zu erwähnen: Wartbarkeit.

Welche Zeile ist besser zu lesen:

double result = CalculateInvariant( true, true, false);

vs.

double result = CalculateInvariant( Sign.PositiveAverage, Maximization.Minimum, Interpolation.Bilinear);

... dachte ich mirs doch.... :-)




Baustatik Demoversion ausprobieren »