4

拡張機能を作成しようとしています (実際にはCase insensitive 'Contains(string)'から取得)

これは、文字列比較を行うときにトルコ テストを補正します。拡張自体は単純です。

public static bool Contains(this string source, string toCheck, StringComparison comp)
{
  return source.IndexOf(toCheck, comp) >= 0;
}

ここで重要なのは、ソリューション全体 (複数のプロジェクトを含み、各プロジェクトには独自の名前空間とクラスがあります) で、string.Contains なしで簡単にアクセスできるように、これをどこに/どのように含めるかを理解しようとしていることです。 class.string.Contains またはその他の方法を実行します。

他のすべてのプロジェクトに含まれるプロジェクト「Util」があるとします。これを (クラスなしで) Util に配置して、ソリューション全体で string.Contains としてグローバルに参照できるようにする方法はありますか?

これは可能ですか?もしそうなら、どのように?

4

2 に答える 2

6

お勧めしませんが、名前空間の下の public static クラスにコードを含めることで、現在の目的を簡単に達成できますSystem

namespace System
{
   public static class CaseInsensitiveContains
   {
       public static bool Contains(this string source, string toCheck, StringComparison comp)
       {
           return source.IndexOf(toCheck, comp) >= 0;
       }
   }
}

静的クラスがないと、拡張メソッドは機能しません。

上記をファイルに入れた後、ほとんどすべてのコードが名前空間を.cs使用するため、どこでも String.Contains を使用できません。つまり、グローバルです。System;)

于 2014-05-11T05:31:54.120 に答える
2

いいえ、そのようなことはできません。できることは、ユーティリティ クラス ライブラリを作成し、以下のような関数を呼び出しまたは使用する他のプロジェクトにその参照を追加することです。

namespace Utility
{
    public class StringUtil
    {
        public static bool Contains(string source, string toCheck, StringComparison comp)
        {
          return source.IndexOf(toCheck, comp) >= 0;
        }
    }
}


using Utility.StringUtil;

//call function
Contains(....);

また

using Utility;

//call function

StringUtil.Contains(....);
于 2014-05-11T05:47:23.923 に答える