5

私はいくつかの拡張メソッドを実装し、それらを別のクラスライブラリプロジェクトに配置しました。

クラスライブラリに次のような単純な拡張メソッドがあると想像してくださいMD.Utility

namespace MD.Utility
{
    public static class ExtenMethods
    {
        public static bool IsValidEmailAddress(this string s)
        {
            Regex regex = new Regex(@"^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$");
            return regex.IsMatch(s);
        }
    } 
}

App_codeしかし、フォルダーやWebFroms分離コードページのようなWebアプリのどこにも、この拡張メソッドを使用できません。私がこのようなことをした場合:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MD.Utility;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        string email = "Someone@Somewhere.com";
        if (email.IsValidEmailAddress())
        {
            //To do 
        }
    }
}

コンパイラは認識せずIsValidEmailAddress()、IntelliSenseのサポートもありません。

拡張メソッドをフォルダーに入れると、App_Codeフォルダー内の別の.csファイルApp_codeまたはWebFormsコードビハインドページで使用できます。

4

5 に答える 5

7

クラス ライブラリへの参照を Web プロジェクトに追加したことを覚えていますか?

それが必要になります。それ以外は、コードは問題なく動作するはずです。

于 2010-04-18T15:58:12.917 に答える
2

ソリューションの再構築を行ったときに変更が再コンパイルされない場合は、使用している参照の種類が原因である可能性があります。MD.Utility プロジェクトが Web プロジェクト ソリューションにある場合は、参照を「プロジェクト参照」にする必要があります。これにより、ビルドはそのコードを依存関係と見なし、何かを変更すると再構築されます。DLL としてインクルードするだけの場合、DLL は外部と見なされ、同じソリューション内にある場合でも、ビルドでは考慮されません。

于 2010-04-18T16:18:10.203 に答える