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ファイルからリソースアイテムを一意に記述することができます。