3

.NETリソースファイルでは、プレーンテキストから画像までさまざまな種類のコンテンツを挿入できます。画像はbase64でエンコードされたバイト配列として表されます(少なくともresxファイルの場合と同じように見えます)。

私の目的は、アプリケーション内のリソースを一覧表示し、コンテンツ(MIME)タイプ、サイズ(バイト単位)などの追加情報を表示できるようにすることです。コンテンツタイプでリソースをグループ化し、並べ替え/フィルター処理する必要があります。

私の質問は-リソースアイテムの適切なMIMEタイプを取得することは可能ですか?たとえば、アプリケーションリソース内にJPG画像を保存した場合、そのコンテンツタイプを。にしimage/jpegます。JSONテキストを保存した場合、そのMIMEタイプに「」と表示させたいのですがapplication/json

.NET標準のリソース管理機能を使用してこれを行うことは可能ですか?

4

2 に答える 2

1

まあ、それはイエスとノーの両方だと思います。この記事によると、特別に準備されたリソースで可能であるため、リソースを含む特定のファイルではノーであり、そのような情報を持っているファイルのみです。また、VS2010のresxエディターでtype列とmimetype列を表示する方法が見つかりません。ただし、プロパティにはファイルタイプが表示されますが、mimetypeは表示されません。

于 2012-08-23T09:47:30.387 に答える
0

MIMEタイプの取得に関連するいくつかの質問を読みました。ほとんどの状況は、物理ファイルの操作に関連していました。ただし、リソースシナリオでは、これが常に当てはまるとは限りません。名前でリソースを取得すると、ほとんどすべてのオブジェクトが返されるためです。さらに、オブジェクトのバイナリ表現に基づいてmimeタイプを決定することには、追加の顕著な欠点があります1)同様のタイプの正確性を保証せず(.docxファイルが誤って認識される可能性がありますapplication/zip)、オブジェクトのバイトを処理する必要があるため、パフォーマンスが低下します。

したがって、リソースを定義する人が、リソースが表すコンテンツタイプに責任があると考えました。そのため、アプリケーション構成の一部であるリソースセット名とリソース名に基づいてmimeタイプのマッピングを定義することにしました。これにより、新しいリソースが追加されるときにコンテンツタイプの説明を追加するための追加の作業が発生しますが、管理は簡単で、アプリケーションを再構築する必要はありません。

たとえば、次の内容のカスタム 構成セクションで作業を行うことができます。

<resourceContentTypeMapping>
    <resourceSet name="CommonResources" defaultContentType="text/plain">
       <!-- This would map enties in CommonResource.resx file -->
       <item key="AppIcon" contentType="image/jpeg" />
    </resourceSet>

    <resourceSet name="SomeOtherResources" defaultContentType="text/plain">
        ...
    </resourceSet>

    ...
</resourceContentTypeMapping>

このdefaultContentType属性は、マップされていないすべてのリソースに対して返されるコンテンツタイプを決定します。text/plainリソースファイルのほとんどの項目は文字列であるため、テキスト以外のリソースのみを記述する必要があるため、作業が簡単になると判断しました。リソースセットにグループ化すると、単一のresxファイルからリソースアイテムを一意に記述することができます。

于 2012-08-28T10:05:38.517 に答える