Public Key Token einer Assembly ermitteln

Um den Public Key Token einer signierten Assembly zu ermitteln, kann das Tool sn.exe genutzt werden. Hierzu einfach den Parameter -T mit angeben und die entsprechende Assembly an den Befehl anhängen. Soll der entsprechende Public Key der Assembly mit ausgegeben werden, so ist der Parameter -Tp zu verwenden.

sn -Tp MyAssembly.dll
Microsoft (R) .NET Framework Strong Name Utility Version 3.5.30729.1
Copyright (c) Microsoft Corporation. All rights reserved.

Public key is
00240000048000009400000006020000002400005253413100040000010001007b625679a9fee3
f6c3c6fa478d4fbcbf46148d0691210aa88aeaec4ff4d350e2261a49b261227105e9257503dc69
51c417e0b0cc924f0c53afa7815499c4c3bc3321547b6f883f75c42b88bcf0ac39690c0f8b3d42
2cc3e5e93f3528e15c32aedf70b930cd75a0ee1f0c87d1f8b35a633d3d002afc566191175d7c5d
90f1fdb2

Public key token is 2bb82c850a7b28d3

Ich habe noch einen Blogeintrag gefunden, der die Einrichtung in Visual Studio beschreibt.

Prüfen ob eine Klasse ein bestimmtes Interface implementiert

Ab und an kann es vorkommen, dass man zur Laufzeit bestimmen muss, ob eine Klasse ein bestimmtes Interface implementiert. Dies läßt sich mit der Methode IsAssignableFrom() der Klasse System.Type realisieren:


public interface IMyInterface
{
    //Interface Code        
}

public class MyInterfaceImplementation : IMyInterface
{
    //Implementierung
}

public class AnotherClass
{ 
    //...
}

typeof(IMyInterface).IsAssignableFrom(typeof(AnotherClass)); //false
typeof(IMyInterface).IsAssignableFrom(typeof(MyInterfaceImplementation)); //true


Erweiterungsmethode: String.Like

Hier eine kleine Erweiterungsmethode, die ein SQL Like auf Strings ermöglicht:


public static bool Like( this string value, string pattern )
{
    string parsedPattern = "\\A" + Regex.Escape( pattern ).Replace( "\\*", ".*" ).Replace( "\\?", "." ) + "\\Z";

    Regex regex = new Regex(parsedPattern, RegexOptions.IgnoreCase);

    return regex.IsMatch(value);
}

Die Funktion eignet sich, wenn ich statt einer Linq-Abfrage einen Lamda-Ausdruck verwenden will/muss:


List<string> theSimpsons = new List<string>(){"Homer", "Bart", "Marge", "Lisa", "Maggie"};

Func<string, bool> matchCriteria = person => person.Like("*ar*");
Debug.WriteLine( "*ar*" );

foreach (string character in theSimpsons.Where(matchCriteria))
{
    Debug.WriteLine( character );
}

matchCriteria = person => person.Like( "M*i*" );
Debug.WriteLine( "M*i*" );
foreach( string character in theSimpsons.Where( matchCriteria ) )
{
    Debug.WriteLine( character );
}

matchCriteria = person => person.Like( "M*e" );
Debug.WriteLine( "M*e" );
foreach( string character in theSimpsons.Where( matchCriteria ) )
{
    Debug.WriteLine( character );
}

matchCriteria = person => person.Like( "*a*" );
Debug.WriteLine( "*a*" );
foreach( string character in theSimpsons.Where( matchCriteria ) )
{
    Debug.WriteLine( character );
}

matchCriteria = person => person.Like( "*a" );
Debug.WriteLine( "*a" );
foreach( string character in theSimpsons.Where( matchCriteria ) )
{
    Debug.WriteLine( character );
}


Ausgabe:
*ar*
Bart
Marge
M*i*
Maggie
M*e
Marge
Maggie
*a*
Bart
Marge
Lisa
Maggie
*a
Lisa