私が働いてきたすべての企業で、.netライブラリを拡張および拡張するだけのライブラリのコアセットを擁護することになりました。通常、私は会社名で始まる名前空間を持っていますが、サブ名前空間は名前空間の名前空間を反映していSystem
ます。
Foo.IO; Foo.Web
私が計画しているのは、これをさらに一歩進めて、会社の名前空間をシステムの名前空間に置き換えることです。これにより、usingステートメントが1つだけ必要になり、コアライブラリがさらに強化されます。
namespace System.IO
{
public static class StreamExtensions
{
...
}
}
実際の質問
これが可能であることはわかっています。Microsoftは独自のライブラリでそれを行っており、他のサードパーティのライブラリでもそれを行っていますが、私が知りたいのは、クラスなど、これを行うことの長期的な影響は何かということです。 .netの新しいバージョンでの名前の競合?誰かがこれを行い、アセンブリ参照を追加できるという単純さを壊した複雑さを処理しなければならなかったことがありますか?
アップデート
残念ながら、これはおそらくプログラマーに属する、これを行うべきかどうかについての議論になっています。卑猥にこれを尋ねる別のSO質問がありますが、それは質問のポイントではありませんでした。
コンパイルエラーや奇妙な動作を引き起こすシナリオがさらに先に発生するかどうかを知りたいと思いました。出てきた唯一の2つの議論はです。
Microsoftは、ライブラリ内の拡張メソッドのシグネチャに一致するメソッドをオブジェクトに追加しますが、オブジェクトへの実装が優先されるため、拡張メソッドが存在する名前空間に違いがないため、これはミュートポイントです。
他の誰かがサードパーティのライブラリで同じことをしていて、名前が衝突しています。これはより可能性が高く、サードパーティのライブラリが他のライブラリをアセンブリにILMergeする場合にすでに対処する必要があります。
明確にするために、これはスタンドアロンライブラリであり、社内で使用するためのものであり、外部で利用できるようにするためのものではなく、Extensionメソッドを介して既存のシステムライブラリを拡張するためのものです。