FullName универсального типа без информации о сборке? - PullRequest
11 голосов
/ 25 января 2010

У меня есть таблица базы данных, в которой хранятся высота, ширина, состояние и так далее окон. В качестве идентификатора для окон я использую полное имя типа формы. Это хорошо работает, но я обнаружил, что некоторые общие формы получают имена, которые являются невероятно длинными. Причина в том, что универсальный тип указан с полной информацией о сборке. Есть ли способ пропустить это?

Например, полное имя обычной формы будет выглядеть так:

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

Есть какие-нибудь подсказки?

Ответы [ 2 ]

15 голосов
/ 12 января 2011

Я согласен с dbemerlin в том, что ваша конечная цель кажется странной, но я просто хотел отметить, что

GetType().ToString();

, кажется, возвращает более короткую версию typename (без информации о сборке общих аргументов).

Полагаю, это может быть полезно для более удобочитаемой версии имени типа.

2 голосов
/ 25 января 2010

Полагаю, что тип, используемый для универсального класса, зависит от конкретной сборки (как и большинство классов .NET), поэтому я не думаю, что вы получите что-либо еще без создания этой строки вручную с помощью отражения или анализа строки.

OTOH Я не думаю, что использование имен типов в качестве ключей является хорошей идеей, может быть, вам стоит подумать о получении какого-то другого ключа (но я не знаю требований, поэтому не могу рекомендовать что-то еще)

...