C#反射分配

时间:2019-01-30 11:49:17

标签: c# reflection

所以我需要一些帮助。我尝试搜索SOF,但是没有运气。

使用反射,我需要测试.NET String类。我需要显示类名称,该类实现的接口,找到该类的程序集,该类的名称空间,继承的类型以及基本信息。这个类是抽象的,泛型的,密封的等吗。我已经学习了20天,现在,我没有运气,所以我正在学习属性,反射和程序集以及元数据程序集,编辑:我的问题是:如何正确地写这个,我试过像1000x,什么也没有,总是有一些错误,总是有错误,我不知道如何开始。.

2 个答案:

答案 0 :(得分:2)

class Program
{
    static void Main()
    {
        TellMeAboutType(typeof(string));
    }
    static void TellMeAboutType(Type type)
    {
        Console.WriteLine("Name: " + type.Name);
        Console.WriteLine("Namespace: " + type.Namespace);
        Console.WriteLine("Assembly: " + type.Assembly.FullName);
        Console.WriteLine("AQN: " + type.AssemblyQualifiedName);
        Console.WriteLine("Abstract: " + type.IsAbstract);
        Console.WriteLine("Generic: " + type.IsGenericType);
        Console.WriteLine("Sealed: " + type.IsSealed);
        Console.WriteLine("Base Type: " + type.BaseType.FullName);
        foreach(var iType in type.GetInterfaces())
        {
            Console.WriteLine("Implements: " + iType.FullName);
        }
    }
}

答案 1 :(得分:1)

我知道Marc已经回答了,但是我想回答问题“如何从反思开始”的简短版本。

基本上,您需要对类型的引用。为此,有两种方法: 1.如果您知道类型(或者它是通用类型,例如<T>):typeof(MyType)typeof(T)。 2.如果您有一个对象实例,则需要首先获取类型,这也很简单:myObject.GetType()

在两种情况下,您都只使用获得的Type对象的属性,如Marc所示。