Solved

C# Class Name as parameter Object

Posted on 2004-04-26
3
1,626 Views
Last Modified: 2010-05-18
This question is related to C#.
I need to create objects of the class name which i will pass as parameter. Which is very much same as RUNTIME_CLASS macro in MFC. My requirement is i want to implement the same thing in C# without using the pointers. I am including a sample code which i am using in my project

switch (classname)
{
    case "Class1"
                     Class1 obj1 = new Class1()
                     break;
    case "Class2"
                     Class2 obj2 = new Class2()
                     break;

}
                 
I want to remove the switch statement and I want to use some thing like RUNTIME_CLASS. But I want to stick with managed code.

0
Comment
Question by:sandy ware
  • 2
3 Comments
 
LVL 30

Expert Comment

by:mayankeagle
ID: 10916130
If you are on C# .NET, you can use this for making objects of any class:

using System.Reflection ;

..
..

Assembly a = Assembly.Load ( assemblyName ) ;
// catch FileNotFoundException - if it is thrown, then the assembly could not be loaded

// You can add: Type t = a.getType ( className, false, true ) ; if ( t == null ) -> Class cannot be instantiated

object instance = a.CreateInstance ( className ) ;

// Now you can cast it to any appropriate instance if you want.

Class1 obj = ( Class1 ) instance ;

It'd be better to check:

if ( instance is Class1 )
  Class1 obj = ( Class1 ) instance ;
0
 

Author Comment

by:sandy ware
ID: 10916760
I have tried this code and the Createinstance is always returns null.

object instance = a.CreateInstance ( className ) ; // instance is always null

 I tried with other assembly functions like, GetAssembly and GetExecutableAssembly and all those stuff. But same result.  MyApplication is a simple Exe and it not refers to any other DLL. Only thing it is having different name spaces. I tried by giving a class name which have name space which is equal to application exe name. That's also not working. The Assembly.Load function getting the assembly properly which i can view through watch window.

Please help me
0
 
LVL 30

Accepted Solution

by:
mayankeagle earned 125 total points
ID: 10916976
The className should contain the complete name, something like: "namespace.sub1.sub2.ClassName". Did you give it that way?

If you have:

namespace X.Y.Z
{
  public class A
  {

The className should be: "X.Y.Z.A"
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
strCount chalenge 3 50
word0 challenge 4 53
How  do I get an older program to run in Windows 10? 20 80
python question 5 58
Here we come across an interesting topic of coding guidelines while designing automation test scripts. The scope of this article will not be limited to QTP but to an overall extent of using VB Scripting for automation projects. Introduction Now…
Whether you've completed a degree in computer sciences or you're a self-taught programmer, writing your first lines of code in the real world is always a challenge. Here are some of the most common pitfalls for new programmers.
An introduction to basic programming syntax in Java by creating a simple program. Viewers can follow the tutorial as they create their first class in Java. Definitions and explanations about each element are given to help prepare viewers for future …
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now