如何将类型保存为字符串格式

本文关键字:字符串 格式 保存 类型 | 更新日期: 2023-09-27 18:02:53

如何将Type保存为字符串格式?

public class cat
{
    public int i = 1;
    public func ()
    {
        Console.WriteLine("I am a cat");
    }
}
// ...
Type obj_type = typeof(cat);
string arg2;
arg2 = obj_type.ToString(); /* error*/
arg2 = (string)obj_type;/*same error*/
arg2 = obj_type.Name; /*same error*/
Console.WriteLine(obj_type); /*ok*/ " temp.cat "

我收到这个错误在上面的行:

不能隐式地将类型'string'转换为'System '。类型的

如何将类型保存为字符串格式

如果需要完全限定类型名称请尝试:

arg2 = obj_type.AssemblyQualifiedName;

您可以获得实例化对象的类型:

string typeName = obj.GetType().Name;

MSDN引用GetType方法:https://msdn.microsoft.com/en-us/library/system.object.gettype(v=vs.110).aspx

如果你想通过Class获取类型名:

private static void ShowTypeInfo(Type t)
{
   Console.WriteLine("Name: {0}", t.Name);
   Console.WriteLine("Full Name: {0}", t.FullName);
   Console.WriteLine("ToString:  {0}", t.ToString());
   Console.WriteLine("Assembly Qualified Name: {0}",
                       t.AssemblyQualifiedName);
   Console.WriteLine();
}

这个工作正常,只是检查它:

Type obj_type = typeof(cat);
string arg2 = obj_type.ToString();
// arg2 = obj_type.Name; it works too and it gives short name without namespaces
Console.WriteLine(arg2);

输出:Test1.cat//全限定名

公立小学
arg2 = (string)obj_type;

这里尝试显式地将Type强制转换为string。就像你说的"嘿,我100%确定Type可以很容易地转换为字符串,所以就这样做吧"。它不能工作,因为它们之间没有简单的转换,编译器不知道如何处理。

typeof接受一个类型而不是它的实例。

看到这个。

public class cat
{
    public int i = 1;
    public void func()
    {
        Console.WriteLine("I am a cat");
    }
}
Type type = typeof(cat);// typeof accept a Type not its instance
string typeName = type.Name;// cat