18

我有一个数据库表,用于存储窗口的高度、宽度、状态等。作为窗口的标识符,我使用表单的完整类型名称。它运作良好,但我发现某些通用形式的名称非常长。原因是泛型类型与完整的程序集信息一起列出。有没有办法跳过它?

例如,常规表单的全名如下所示:

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]]

有什么线索吗?

4

2 回答 2

26

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

GetType().ToString();

似乎返回了较短版本的类型名(没有通用参数的程序集信息)。

我想这对于类型名称的更易于阅读的版本可能会很方便。

于 2011-01-11T21:28:59.903 回答
2

我想用于泛型类的类型取决于特定的程序集(大多数.NET 类也是如此),所以我认为如果不通过反射或字符串解析手动创建此字符串,您将不会得到任何其他东西。

OTOH我不认为使用类型名称作为键是一个好主意,也许您应该考虑获取其他键(但我不知道要求,所以我不能推荐其他东西)

于 2010-01-25T14:09:20.837 回答