How to plug-in a DLL into a C# project Jan 7, 2010 .NET FRAMEWORK   C#

John Grove share a code at MSDN on how can we call DLLs methods dynamically using C# code.

The below code can further be modified and a developer can easily extend the functionality of his application to create a application which accepts DLLs as plug-ins. This concept is useful when different users have different requirements in a generalized application like in the case of famous photo editing program Photoshop from Adobe. Here anyone can create a plug-in and hook it up with the host application which further inherits all the functionalities from the DLL.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
 
namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly assembly = Assembly.LoadFrom(@"C:\Documents and Settings\john.grove\MyMath.dll");
            Type mathUtility = assembly.GetType("MyMathUtilty");
            Object theInstance = Activator.CreateInstance(mathUtility);
            Int32 result = (Int32)mathUtility.InvokeMember("Add", BindingFlags.InvokeMethod, null, theInstance, new object[] { 56, 26 });
            Console.WriteLine("Dynamically invoking MyMathUtilty Add method");
            Console.WriteLine("56 + 26 = {0}", result);
            Console.WriteLine("");
 
            // get all public static methods of MyMathUtilty type
            MethodInfo[] methodInfos = mathUtility.GetMethods(BindingFlags.Public | BindingFlags.Static);
            Console.WriteLine("All public/static methods in MyMathUtilty");
            Console.WriteLine("----------------------------------------");
            for (Int32 i = 0; i < methodInfos.Count(); i++ )
                Console.WriteLine("{0}.) {1}", i + 1, methodInfos[i].Name);
            Console.ReadLine();
        }
    }
}
Removing Duplicates from a List in C# Dec 24, 2009 .NET FRAMEWORK   C#   CODE SNIPPETS

For more details and detailed explaination of the code visit this link.

static List removeDuplicates(List inputList)
{
      Dictionary uniqueStore = new Dictionary();
      List finalList = new List();
      foreach (string currValue in inputList)
      {
          if (!uniqueStore.ContainsKey(currValue))
          {
              uniqueStore.Add(currValue, 0);
              finalList.Add(currValue);
          }
      }
      return finalList;
}
Manage your Azure storage with ease! Dec 24, 2009 AZURE   MICROSOFT   UTILS

If your are using Windows Azure for storing files here are the tools you should love to use to manage your Azure cloud storage.

Azure Storage Explorer

And

Cloud Storage Studio

If you don’t have an Azure account, then have one HERE

Protect your .NET Applications/Libraries from 'Reflection' Dec 24, 2009 .NET FRAMEWORK   UTILS

As a programmer, you put a lot of effort to create an application and incorporate some unique features in your application, which in turn makes your application more feature rich and different from other applications. The question here is, how do you feel when you come to know that someone has played with your code and then make a same application with his name…You did all the hard work and some random guy on this blue planet stole your code and takes all the credit.

Well the answer lies in Obfuscation. It is a method to prevent your application from being reverse engineered. It makes the code of your application in unreadable form when it is viewed in any reflection tool. You will find many obfuscator tool, but some of them are not free and others are not ease at use. I do some search over the net and found a totally free and reliable tool for obfuscating my applications and libraries. This free obfuscating tool can be downloaded from here. The version here supports obfuscations for .NET framework 3.5 and for .NET framework 4.0, well we have to wait for the final release as it is still in beta but can be downloaded from here.

Let’s see Red Gate’s Reflector and Eazfuscator.NET (actual name of the obfuscater tool) in action

First I created a basic simple greeting application in Visual Studio 2008 (.NET Framework 3.5). The application has two buttons which greets the user and world respectively. Now take a look how the binary is diassembled by using reflector.

.NET Reflector

And now we will use Eazfuscator.NET to obfuscate our application. So first download and install the obfuscator tool form the above link and then simple drag-n-drop application on the right segment. I remommend to read the whole documentation before you start obfuscating your application and assemblies and make sure you have a bacup of your original application before you proceed.

Drag and drop your application here.

Eazfuscator app

As soon as you drop your binary here the obfuscation process will start automatically.

Eazfuscator app in action

And thats it, your code is now safe and you can distribute you applicaion without any more worries.

Now try opening your obfuscated application in reflector….and this is what you will see.

.NET Reflector application

Retrieve Key from Value in Hash Table Dec 16, 2009 C#   CODE SNIPPETS

Working with hash tables is pretty simple but few days back I was having a problem in retrieving a key from a value in hash table. I was bit lazy to find a way myself, so I searched the net and here is what I got….a simple piece of code which lead to me to complete my task and so I thought I should share it with everyone here.

public string FindKey(string Value, Hashtable HT)
{
       string Key = “”;
       IDictionaryEnumerator e = HT.GetEnumerator();
       while (e.MoveNext())
       {
            if (e.Value.ToString().Equals(Value))
            {
               Key = e.Key.ToString();
            }
       }
       return Key;
}