当我经历反思时,我遇到了这个:
Type T = Type.GetType("Somenamespace.someclass");
'T'在这里是一个对象吗?如果是这样,它缺少对象的完整定义:
Type T = new Type();
那么T
如何成为一个对象呢?我们如何将Type.GetType("Somenamespace.someclass");
的值分配到T
?
答案 0 :(得分:3)
someclass
是Type
的对象。它不是Type
的实例,如果这是你想知道的。
Type T = new Type();
- 类用于描述类声明等等。
解决你的意见:
Type
只能由Type
的其他构造函数以及从protected
继承的类调用,因为parameterless Type
-Constructor已声明为var obj = new someclass();
var type = obj.GetType();
,并且它没有意义用普通代码调用它(它会描述什么?)。一个典型的电话是......那样:
@import "font-awesome-compass";
$fa-sass-asset-helper: false;
$fa-font-path: "/fonts/fontawesome/";
@import "font-awesome";
答案 1 :(得分:2)
是的,T是类onMenuItemClick
的对象,其中:
表示类型声明:类类型,接口类型,数组 类型,值类型,枚举类型,类型参数,泛型类型 定义,以及打开或关闭的构造泛型类型。 https://msdn.microsoft.com/en-us/library/System.Type%28v=vs.110%29.aspx
Type
是Type类的静态方法,它将返回Type.GetType("Somenamespace.someclass");
对象,其中包含与此特定类相关的属性和方法。它不会是Type
的实例。
答案 2 :(得分:0)
使用Activator.CreateInstance()课程。这样:
var someclassType = Type.GetType(“Somenamespace.someclass”);
var someclassInstance = Activator.CreateInstance(someclassType);
另一个例子:
using System;
class DynamicInstanceList
{
private static string instanceSpec = "System.EventArgs;System.Random;" +
"System.Exception;System.Object;System.Version";
public static void Main()
{
string[] instances = instanceSpec.Split(';');
Array instlist = Array.CreateInstance(typeof(object), instances.Length);
object item;
for (int i = 0; i < instances.Length; i++)
{
// create the object from the specification string
Console.WriteLine("Creating instance of: {0}", instances[i]);
item = Activator.CreateInstance(Type.GetType(instances[i]));
instlist.SetValue(item, i);
}
Console.WriteLine("\nObjects and their default values:\n");
foreach (object o in instlist)
{
Console.WriteLine("Type: {0}\nValue: {1}\nHashCode: {2}\n",
o.GetType().FullName, o.ToString(), o.GetHashCode());
}
}
}
// This program will display output similar to the following:
//
// Creating instance of: System.EventArgs
// Creating instance of: System.Random
// Creating instance of: System.Exception
// Creating instance of: System.Object
// Creating instance of: System.Version
//
// Objects and their default values:
//
// Type: System.EventArgs
// Value: System.EventArgs
// HashCode: 46104728
//
// Type: System.Random
// Value: System.Random
// HashCode: 12289376
//
// Type: System.Exception
// Value: System.Exception: Exception of type 'System.Exception' was thrown.
// HashCode: 55530882
//
// Type: System.Object
// Value: System.Object
// HashCode: 30015890
//
// Type: System.Version
// Value: 0.0
// HashCode: 1048575