Type T = Type.GetType(“SomeClass”)如何;给我一个对象?

时间:2015-06-27 11:38:46

标签: c# class object types

当我经历反思时,我遇到了这个:

Type T = Type.GetType("Somenamespace.someclass");

'T'在这里是一个对象吗?如果是这样,它缺少对象的完整定义:

Type T = new Type();

那么T如何成为一个对象呢?我们如何将Type.GetType("Somenamespace.someclass");的值分配到T

3 个答案:

答案 0 :(得分:3)

someclassType的对象。它不是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