Wednesday, September 23, 2009

Dynamically Loading .NET Custom Controls Using Reflection

The usual way of adding custom controls on a Web Forms page is by specifying the required HTML markup in the Web Page. But in real world applications we may need to dynamically load custom controls. Here is one way of doing so using Reflections.


System.Reflection.Assembly a =
System.Reflection.Assembly.Load("Myproject.Controls");
Type t = a.GetType(string.Concat("Myproject.Controls.", "CustomControl1"));

if (null != t)
{
Control c = ((Control)(Activator.CreateInstance(t)));

// Then we can access the properties of the control by
// casting the it to the relevant type.
((Myproject.Controls.CustomControl1)c).ID = "ctrlCustomControl1";
}

Tuesday, September 1, 2009

Visual Studio Projects - Project Type GUIDs


Visual Studio projects have a project type (in some cases more than one type) and it is identified by a unique GUID. This GUID is generally available in the project file. But in projects like Web Site projects which do not have a project file; this GUID is stored in the solution file.

A list of known project type GUIDs are as follows:


Windows (C#)
{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}

Windows (VB.NET)
{F184B08F-C81C-45F6-A57F-5ABD9991F28F}

Windows (Visual C++)
{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}

Web Application
{349C5851-65DF-11DA-9384-00065B846F21}

Web Site
{E24C65DC-7377-472B-9ABA-BC803B73C61A}

Disdivibuted System
{F135691A-BF7E-435D-8960-F99683D2D49C}

Windows Communication Foundation (WCF)
{3D9AD99F-2412-4246-B90B-4EAA41C64699}

Windows Presentation Foundation (WPF)
{60DC8134-EBA5-43B8-BCC9-BB4BC16C2548}

Visual Database Tools
{C252FEB5-A946-4202-B1D4-9916A0590387}

Database
{A9ACE9BB-CECE-4E62-9AA4-C7E7C5BD2124}

Database (other project types)
{4F174C21-8C12-11D0-8340-0000F80270F8}

Test
{3AC096D0-A1C2-E12C-1390-A8335801FDAB}

Legacy (2003) Smart Device (C#)
{20D4826A-C6FA-45DB-90F4-C717570B9F32}

Legacy (2003) Smart Device (VB.NET)
{CB4CE8C6-1BDB-4DC7-A4D3-65A1999772F8}

Smart Device (C#)
{4D628B5B-2FBC-4AA6-8C16-197242AEB884}

Smart Device (VB.NET)
{68B1623D-7FB9-47D8-8664-7ECEA3297D4F}

Workflow (C#)
{14822709-B5A1-4724-98CA-57A101D1B079}

Workflow (VB.NET)
{D59BE175-2ED0-4C54-BE3D-CDAA9F3214C8}

Deployment Merge Module
{06A35CCD-C46D-44D5-987B-CF40FF872267}

Deployment Cab
{3EA9E505-35AC-4774-B492-AD1749C4943A}

Deployment Setup
{978C614F-708E-4E1A-B201-565925725DBA}

Deployment Smart Device Cab
{AB322303-2255-48EF-A496-5904EB18DA55}

Visual Studio Tools for Applications (VSTA)
{A860303F-1F3F-4691-B57E-529FC101A107}

Visual Studio Tools for Office (VSTO)
{BAA0C2D2-18E2-41B9-852F-F413020CAA33}

SharePoint Workflow
{F8810EC1-6754-47FC-A15F-DFABD2E3FA90}

XNA (Windows)
{6D335F3A-9D43-41b4-9D22-F6F17C4BE596}

XNA (XBox)
{2DF5C3F4-5A5F-47a9-8E94-23B4456F55E2}

XNA (Zune)
{D399B71A-8929-442a-A9AC-8BEC78BB2433}

SharePoint (VB.NET)
{EC05E597-79D4-47f3-ADA0-324C4F7C7484}

SharePoint (C#)
{593B0543-81F6-4436-BA1E-4747859CAAE2}

Silverlight
{A1591282-1198-4647-A2B1-27E5FF5F6F3B}