2010-01-25 65 views
10

我在哪里存储的高度,宽度,状态数据库表,等等,窗口。作为窗口的标识符,我使用表单的完整类型名称。它运行良好,但我发现一些通用的表单获得的名字非常长。原因是通用类型列出了完整的程序集信息。有没有办法跳过这个?没有程序集信息的泛型类型的全名?

例如常规形式的全名应该是这样的:

Some.Name.Space.NameOfForm 

但一般形式的全名是这样的:

Some.Name.Space.NameOfForm`1[[Some.Other.Name.Space.GenericType, AssemblyName, Version=1.0.2.0, Cuntulre=neutral, PublicKeyToken=null]] 

为什么会得到这么久?有没有一种方法可以获得更短的版本?例如:

Some.Name.Space.NameOfForm`1[[Some.Other.Name.Space.GenericType]] 

任何线索?

+0

你怎么叫什么名字? .GetType()。全名? – 2010-01-25 14:06:03

+0

@Tor:这是对的,是的。 – Svish 2010-01-25 14:20:53

+0

@Svish [b8adamson的答案](http://stackoverflow.com/a/4662878/521757)实际上是正确的。 – jnm2 2016-02-12 21:18:44

回答

11

我在你的最终目标似乎很奇怪dbemerlin同意,但我只是想指出,

GetType().ToString(); 

似乎返回类型名称的短版本(W/O的通用参数集信息)。

我想这可能对类型名称的更多人类可读的版本是得心应手。

+4

这应该是答案。谢谢。 – IllidanS4 2014-05-29 17:45:16

2

我想使用泛型类的类型取决于特定的组件(如大多数.NET类的),所以我不认为你会得到什么都没有通过反射或字符串解析手动创建此字符串。

OTOH我不认为使用类型名称作为关键字是一个好主意,也许你应该考虑让其他一些重要的(但我不知道这个要求,所以我不能建议别的东西)

相关问题