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

ジェネリック クラスに使用される Type は (ほとんどの .NET クラスと同様に) 特定のアセンブリに依存すると思いますので、この文字列をリフレクションまたは文字列解析によって手動で作成しない限り、他には何も得られないと思います。

OTOH タイプ名をキーとして使用することは良い考えではないと思います。おそらく、他のキーを取得することを検討する必要があります (ただし、要件がわからないため、他のキーをお勧めすることはできません)。

于 2010-01-25T14:09:20.837 に答える