名前空間が存在するのは、オブジェクト内のプロパティを一意に識別するためです。
Microsoft CDO for Windows 2000 では、Uniform Resource Identifier (URI) を使用して、フィールド名とその意味定義を修飾またはスコープします。Fields コレクションを通じてアクセスされる各フィールドは、ネームスペース プレフィックスとローカル名で構成されます。名前空間プレフィックスは、プロパティのセマンティック定義を修飾またはスコープするために使用される URI 参照です。たとえば、メッセージの件名フィールドには 2 つの表現があります。1 つは RFC 1522 で定義されたメカニズムを使用してエンコードされた非 US-ASCII 文字を含むもので、もう 1 つはこれらの文字がネイティブの UNICODE 文字にデコードされるものです。名前空間を使用することで、メッセージの「件名」が要求されたときに、どのセマンティック定義が意図されているかを識別できます。この場合、urn:schemas:mailheader 内で定義された件名フィールド:
MSDN の記事 Fieldsから。
XML Namespacesや、C#などの言語の名前空間とほぼ同じプリンシパルです。
彼らは実際には Microsoft にまったく接続していません。実際、ブラウザに URL を入力してみると、404 エラーが発生します。
これは、 Exchange サーバーに接続するために設定する必要があるプロパティを設定するためのかなり洗練されていない構文です。
たとえば、メールを送信するためにコードが接続するサーバーを設定するには、プロパティを設定しますsmtpserver
。内部的に、このプロパティに到達するために、アセンブリはこれを URI にマップしますhttp://schemas.microsoft.com/cdo/configuration/smtpserver
メールを送信するための AC# コンポーネントは、設定を要求する場合がありますSmtpMail.Server
。ただし、SmtpMail を作成するには、名前空間を調べる必要があったことを思い出してください。System.Web.Mail
そのため、プロパティへの完全修飾パスはSystem.Web.Mail.SmtpMail.Server
Here です。ただし、言語ははるかに洗練されています。using ステートメントを使用すると、作成のコンテキストに入ることができます。これにより、タイピングの量が減ります。本当にやりたい場合は、C# で次のようにできることを思い出してください。
System.Web.Mail.SmtpServer mailServer = new System.Web.Mail.SmtpServer();
どちらがより冗長です。
私の意見では、URI 構文は扱いにくいですが、当時は、同じ名前を持つものを一意に区別するという問題に対する提案された解決策であり、別の意味を持つ可能性がありました。使った人もいました。多くの人はしませんでした。このコードは 10 年以上前のものです。