Activator.CreateInstance的用法

lcm_xiaoya 2009-03-30 04:28:54
Activator.CreateInstance的用法
我在用Activator.CreateInstance动态创建实例的时候,系统老是报错,
报错内容为:“未找到类型“System.String”上的构造函数。”,报错一般都是提示未找到某某类型的构造函数,我还试了动态创建int,数组型 数据,都基本报这个错误。我也看了Msdn有关Activator.CreateInstance的用法,但是感觉描述的太抽象了。
我写的代码如下所示(部分): ,

//>获取数组元素的类型(a为Array型数组)
Type elementType=a.GetType().GetElementType();
//>动态创建数组元素(这里我希望能够创建任何类型 的对象,即elementType为任何类型)
object arrIndexObj = Activator.CreateInstance( elementType, null );

能不能找到一个方法可以创建任何类型的对象?或者具体遇到某种类型该传什么参数?在线等。急!
...全文
1764 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcm_xiaoya 2009-03-30
  • 打赏
  • 举报
回复
谢谢各位的指教,Activator.CreateInstance这种方法我没有继续跟进。
我用下面这种方式解决了:
//>用元素类型所在的程序集创建实例
Assembly assembly = elementType.Assembly;
arrIndexObj = assembly.CreateInstance( elementType.FullName, true );
lcm_xiaoya 2009-03-30
  • 打赏
  • 举报
回复
//>动态创建数组元素(这里我希望能够创建任何类型 的对象,即elementType为任何类型)
object arrIndexObj = Activator.CreateInstance( elementType, null );

关键的问题是:我预先不知道elementType是什么类型。我写代码的目的是反射某对象的类型,然后创建实例。


yangqidong 2009-03-30
  • 打赏
  • 举报
回复
string的构造方法没有无参的
zgke 2009-03-30
  • 打赏
  • 举报
回复
你的类型 如果是必须构造

例如

public class Test
{
public Vaaa(int v)
{

} }


这样的 你反射一定失败..

你的用GetConstructors() 来判断的. 如果有参数

Activator.CreateInstance( elementType, new object[]{参数});



wartim 2009-03-30
  • 打赏
  • 举报
回复
只能创建有对应构造函数的类实例
lcm_xiaoya 2009-03-30
  • 打赏
  • 举报
回复

111,126

社区成员

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

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

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