导航
  • 主页
  • C#综合技术
  • C#互联网桌面应用
  • AppLauncher
  • WinForm
  • WPF
  • 问答

请教由Type怎样得到一个Instance?

lovexyz 2005-08-15 06:56:52
可能问的不是很明白,解释一下:
比如,我想有一个Create方法,声明成这样了:
object Create(Type t)

现在想问的是:怎样定义这个Create以实现当t不同时返回不同的实例。比如传入t=typeof(xxx)就return 一个XXX的实例

指教
...全文
66 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovexyz 2005-08-21
呵呵,感谢各位了
回复
TechEye 2005-08-15
return Activator.CreateInstance(typeof(typeName), object[] args);
回复
Tony_lau111082 2005-08-15
try
{
Type myType = typeof(MyClass1);
Type[] types = new Type[1];
types[0] = typeof(int);
// Get the public instance constructor that takes an integer parameter.
ConstructorInfo constructorInfoObj = myType.GetConstructor(
BindingFlags.Instance | BindingFlags.Public, null,
CallingConventions.HasThis, types, null);
if(constructorInfoObj != null)
{
Console.WriteLine("The constructor of MyClass1 that is a public " +
"instance method and takes an integer as a parameter is: ");
Console.WriteLine(constructorInfoObj.ToString());
}
else
{
Console.WriteLine("The constructor of MyClass1 that is a public instance " +
"method and takes an integer as a parameter is not available.");
}
}
catch(ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException: " + e.Message);
}
catch(ArgumentException e)
{
Console.WriteLine("ArgumentException: " + e.Message);
}
catch(SecurityException e)
{
Console.WriteLine("SecurityException: " + e.Message);
}
catch(Exception e)
{
Console.WriteLine("Exception: " + e.Message);
}
回复
fengliudai 2005-08-15
上msdn查了一下,还是猩猩比较牛*
回复
fengliudai 2005-08-15
同意楼上的,应该自己转变类型
回复
机器人 2005-08-15
楼主,请使用System.Activator.CreateInstance(Type type)方法。
回复
immonypaggy 2005-08-15
实际上你是可以ruturn XXX类型的。
只不过你return之后还是object的,在其他地方调用Create(t)的时候,返回的还是object类型,你可以进行转换。
如果要想直接return其他类型,我认为是不行的。你的函数的返回类型已经被你定义成object了,你说是吗?
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.