如何将一个字符串转换成一个类的名称

fenghua2003 2008-03-06 02:38:43
我想动态创建一个类,类的名称就是从 texBox1.text 获取, 请问如何能实现?
谢谢!
...全文
170 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
marvelstack 2008-03-06
  • 打赏
  • 举报
回复
参考
使用反射生成一个窗体的例子:
Assembly assm = Assembly.LoadFrom("e:\\WindowsApplication.dll");
Type TypeToLoad= assm.GetType("WindowsApplication.Form1");

object obj;
obj = Activator.CreateInstance(TypeToLoad);
Form formToShow = null;
formToShow = (Form)obj;
formToShow.Show();

另外参考,
http://www.c-sharpcenter.com/CSNET/dynamicinvoke.asp
http://www.c-sharpcorner.com/Code/2002/April/LoadingAssemblyInfo.asp

Dynamically load a class and execute a method in .NET
http://www.codeproject.com/csharp/DynLoadClassInvokeMethod.asp
lake_cx 2008-03-06
  • 打赏
  • 举报
回复
只有动态创建对象,动态创建类???运行时写类代码?
奔跑的蜗牛007 2008-03-06
  • 打赏
  • 举报
回复
同意三楼的做法,用反射,很容易的
yuanmanguo 2008-03-06
  • 打赏
  • 举报
回复
用反射.
一个小例子.
class Program
{
public static void Main(String[] args)
{
string FruitName = Console.ReadLine();
IFruit MyFruit;
FruitFactory MyFruitFactory = new FruitFactory();
MyFruit = MyFruitFactory.MakeFruit("tmConsoleApp." +FruitName); //必须使用名称空间+类名称

Console.ReadLine();
}
}

public interface IFruit
{ }

public class Orange:IFruit
{
public Orange()
{
Console.WriteLine("An orange is got!");
}
}

public class Apple:IFruit
{
public Apple()
{
Console.WriteLine("An apple is got!");
}
}

public class FruitFactory
{
public IFruit MakeFruit(string Name)
{
IFruit MyFruit = null;
try
{
System.Type type = System.Type.GetType(Name, true);//必须使用名称空间+类名称
MyFruit = (IFruit)Activator.CreateInstance(type);
return MyFruit;
}
catch (TypeLoadException e)
{
Console.WriteLine("dont know this kind of fruit,exception caught - {0}", e.Message);
return MyFruit;
}
}
}
sdyqingdao 2008-03-06
  • 打赏
  • 举报
回复
good question
cnfixit 2008-03-06
  • 打赏
  • 举报
回复
看这个帖子
http://topic.csdn.net/u/20080305/17/815d3d0c-bf27-4f8b-860f-7166a149cba2.html

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧