0

コードビハインドのグリッドに入力されたアイテムをフィルタリングしようとしています。データ アクセス レイヤーからアダプターを呼び出そうとすると、次のエラーが表示されます。

静的クラス 'SFTIP.DataAccessLayer.InventoryAdapter' のインスタンスを作成できません

フィルタは、ユーザー ロールに関連するグリッド内の項目のみを表示するためのものです ( AssetOwnershipProgramIds)。

エラーは、new InventoryAdapter()この行のこのセグメントにあります。

filteredList = new InventoryAdapter().GetAllByFilter(inventoryFilter);

作成しようとしているフィルターのコードは次のとおりです。

public List<Inventory> BindGrid()
{
    List<Inventory> filteredList = new List<Inventory>();
    SearchFilterInventory inventoryFilter = new SearchFilterInventory();
    User currentUser;

    currentUser = (Session["CurrentUser"] == null) ? (User)Session["CurrentUser"] : new User();
    if (currentUser.AdminPrograms.Count > 0)
    {
        inventoryFilter.AssetOwnershipProgramIds.Add(currentUser.AdminPrograms[0].ReferenceId);
        filteredList = new InventoryAdapter().GetAllByFilter(inventoryFilter);
    }

    return filteredList;
}

私が間違っている場所について誰かがガイダンスを提供できますか? 私はこれがかなり単純なものであることを知っています.これは継承されたプロジェクトであり、私はまだすべての点を接続しようとしています. ご覧いただきありがとうございます。

4

4 に答える 4

0

コードを実装するには、このようなクラス宣言が必要です。

public class InventoryAdapter
{
  public InventoryAdapter() { }

  public object GetAllByFilter() { }
}

または、メソッドが静的であることを意図している場合、またはそれを所有または制御していない場合は、次のようにメソッドを呼び出します。

var filtereditems = InventoryAdapter.GetAllByFilter(inventoryFilter);
于 2014-04-22T16:49:19.337 に答える
0

静的クラスはインスタンス化されることを意図していません:

静的クラスは基本的に非静的クラスと同じですが、1 つの違いがあります。静的クラスはインスタンス化できないということです。つまり、 new キーワードを使用してクラス型の変数を作成することはできません。インスタンス変数がないため、クラス名自体を使用して静的クラスのメンバーにアクセスします。

(出典: MSDN )

おそらく、GetAllByFilterメソッドも静的です。その場合は、障害行を次のように変更することで問題を解決できます。

var filtereditems = InventoryAdapter.GetAllByFilter(inventoryFilter);
于 2014-04-22T16:46:40.960 に答える