April 6, 2014

base keyword in c#

The base keyword in C# is used from within the derived class to access the members / constructor of the base class. What i mean here is if the derived class wants to use a method of the base class that is overridden by another method or the derived class wants to specify which base class constructor should be used while creating instance of the derived class. Example to come... Thanks, Hussain

April 1, 2014

Using Remote Desktop Connection Manager with Windows Azure Virtual Machines

In the Earlier post, I have explained how to use (RDP Man) to Remote Desktop machines, recently I was in a situation where in I had to work on Windows Azure Virtual machines. 
The Network team who created the VM’s had sent an email with the DNS names and the port numbers (of course login details in separate email. To my surprise, there was no ip address mentioned for the VM’s in the email. (I could have got it sending an email).

Below are the steps to add / manage connections to virtual Machines in Windows Azure using the Remote Desktop manager (Rdp Man)

1.   Open RDP Manager (if not installed here is the link )
2.   Now Add a Server Group (just to separate these servers from other servers and put it in a separate Group).
Note: The actual benefit of adding a group (in case you are managing large number of connections) is you can navigate quickly and manage setting for a single point (specifying the settings that are common to all servers in the group properties, which will be inherited by all the servers in the group) Although this is not a mandatory setting / option
3.   Right click on Group and select Add Server. This will bring up the add Server dialog box.
4.   In this dialog box you have to add the Windows Azure server (vm’s) details. Note: The only difference as compared to normal server is the port number and the DNS name (In case you don’t have the ip address).
a.    Click on Server settings tab and enter the DNS name / ip address next to Server Name
b.    Type some description (optional) next to Description.
c.    Now click on the connection Settings tab, in this tab un-check the option inherit from parent and Connect to console, enter the port number next to port
d.   You can also add login details by clicking on the login Credentials tab (or can set it for once in the Group that was created in step 2 above)

5.   Now you can simply double click to connect to the machine whenever you want.

Remote Desktop Manager - Excellent Tool

I have been using this tool for almost a year now and found to be the best tool for Remote Desktop.
If you are using Remote Desktop to login into machines many times a day, for your work and you are using mstc to remote desktop or have created .rdp files. There is a solution for this.

Use Remote Dektop Manager.
Grab a copy of the same from here Remote Desktop Manager


Details on how to add the server and login Details..  ( coming)

March 28, 2014

Dependency Injection - Design Patterns

Dependency Injection

Definition:

Dependency injection is a technique used in Oops. in this technique the component are loosely coupled by passing the dependencies to the object, rather than the object instantiating it own dependencies.

Explain in detail dependency injection?

March 15, 2014

Understanding Namespaces in c#




Understanding Namespace in C#

1000’s and 1000’s of classes are defined in .NET framework and all these classes are organized under different Namespaces. You can think of Namespaces as boxes with Names on it and all the classes relevant to the box are put in it – Under that namespace, so when a class is used we can refer to the class as namespace.class name.

In C# namespaces are used extensively - first while using the .NET classes, their respective namespaces are used and secondly while creating our own types – we are creating our own / user defined namespaces.




Having namespaces helps you to control the scope of the class and its methods. If there are no namespaces, we would not be able to use multiple classes having same name. Eg. we can have a class called Console having a method WriteLine under namespace MyNamespace – (MyNameSpace.Console.WriteLine - . I agree - it’s a bad idea to create such class and method. As we already know there’s a similar class in .NET framework under System Namespace. System.Console.WriteLine.

But in reality we might come across such situation where in we have same class name as a class in .Net framework or a third party dlls is having a same class name, in such cases namespaces help us to differentiate the classes and use them efficiently.

Note:  Visual Studio IDE helps us to organize the classes under different namespaces, by defaulting the project name as namespace of the class, but it is not mandatory. Namespaces do not refer to or correspond to a file or a directory.



Using namespaces:- A class can be invoked from a namespace using 3 ways.
  1.     Writing the fully qualified name ( see below example)
  2.     Implementing the using directive,
  3.     Implementing using alias ( see below example

Note: The above ways are used for calling classes for both .NET namespaces or from custom/ own namespaces.


The using directive allows us to use the classes / types without having to specify the namespace. 
The using alias allows us to create and identifier for a namespace or class. The identifier is assigned a fully qualified name. Ex using project = MyNamesapce.MyClassName;
Namespace alias qualifier:

The namespace alias qualifier (::) is used search for identifiers. It is used to reference a namespace alias and global:: us used to reference the global namespace. (Note: global is not an predefined alias qualifier, it gets this special status after its used with (::). Also you cannot used the global word with using alias (eg. Using global = MyNamespace.MyClass), this is a compiler error, because as mentioned earlier, global:: always reference the global namespace and not and alias.

Use of Global namespace alias:- 
global:: - is used to access the global namespace.
The global namespace access is required in scenarios where the user defined class / type has the same name as the system defined .NET class and the System defined class is now hidden from in the current namespace – See below example.
    



March 11, 2014

Open Visual Studio IDE from Run command of your choice ( when you have 2 different versions of Visual Studio)

Question:
When you have two versions of Visual Studio installed on the same machine, for example Visual Studio 2010 and Visual Studio 2012, you want to always open Visual Studio 2012 as default?

Solution: 
When you have two versions of Visual Studio installed, say first you installed Visual Studio 2010 and then installed Visual Studio 2012. If you are using shortcut to open Visual Studio IDE
Start - Run - devenv.exe
By default Visual Studio 2010 will be opened. As Visual Studio 2010 was installed first and a register entry was done.

Now that you have installed Visual Studio 2012 without uninstalling Visual Studio 2010, this registry entry is not made for Visual Studio 2012

You can make Visual Studio 2012 to open as default, by modifying the registry entry. See below the steps.
  • Click on Windows Start button.
  • Type regedit.exe in the search text box, regedit.exe will appear. 
  • Click on the regedit.exe. This will open the Registry Editor.
  • Navigate to the following path in the left section
    •  HKEY_LOCAL_MACHINE => SOFTWARE => Microsoft => Windows => CurrentVersion => App Paths => devenv.exe
  • Click on devenv.exe you will see the default key on the right section.
  • Double click on default to change the value.
  • In this case for Visual Studio 2010 the value would be  (C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe)
  • Change this value to the path where Visual Studio 2012 devenv.exe is located, in this case (C:\Program Files(x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe) and click Ok.
  • Close Registry editor.
  • Now when you type devenv.exe from Run it is open Visual Studio 2012.
Following are default path where Visual Studio IDE is installed by default 

Visual Studio 2008
C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE\devenv.exe

Visual Studio 2010
C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe 

Visual Studio 2012
C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe 

Thanks,
Hussain Patel

March 5, 2014

How to: Set the Startup Form in a WPF Application

Question: In my WPF project, I have two .xaml WPF forms (MainWindow.xaml and Window1.xaml), how do I set Window1.xaml as a startup form for my WPFproject.?

Solution: 
  • Double click on the App.xaml file, in the Solution Explorer window.
  • App.xmal file would open and would have the following xml
<Application x:Class="WPFTutorialDemo.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
         
    </Application.Resources>
</Application>

You need to change the StartupUri attribute (highlighted yellow) with the name of the form you want to set as startup, in this case Window1.xaml, Save and close the file.

Thanks,
Hussain Patel

January 14, 2014

Refactoring

Refactoring

Definition: I will go with the dictionary definition

Refactoring (noun): A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.

Refactor:

So, what is refactoring?

Does it mean just cleaning of code, the answer is just, but I feel it’s more than just cleaning code. Refactoring provides a technique for cleaning code in a more controlled manner and efficiently.

Developer productivity will increase the more they learn about refactoring methods, the more they use them the more they can reduce bugs in their code.

Purpose of refactoring:
  1. Make the code easier to understand and modify
  2. Refactoring make little or no changes to the overall functionality of the component (observable behavior)
  3. Like Performance tuning – helps in improving the speed of the application, without altering the actual functionality, similarly refactoring help in cleaning small amount of internal code without changing the actual functionality. 
In next post i will start with other refactoring methods

Thanks,
Hussain Patel