1

コードでnullを返しています: (varcat行)

public class CategoryItemsViewModel
{
    public ICategoriesRepository categoriesRepository;

    public IEnumerable<Categories> GetCategories()
    {
        var cat = categoriesRepository.Categories;

        return cat;

    }
}

これがインターフェースです:

namespace SportsStore.Domain.Abstract
{
    public interface ICategoriesRepository
    {
        IQueryable<Categories> Categories { get; }
        void SaveCategory(Categories category);
        void DeleteCategory(Categories category);
    }
}

これがクラスです:

namespace SportsStore.Domain.Entities
{
    public class Categories
    {
        [Key]
        public int CategoryID { get; set; }
        public string CategoryName { get; set; }
    }

}

私は何が間違っているのですか?

4

2 に答える 2

2

これまでのところ、問題はありません。不完全なだけです。

他の誰かが提案したように、セッターは必要ありません。実際、この場合、セッターを持たない方がよいでしょう。

インターフェイス ICategoriesRepository の具体的な実装が必要です。

public class CategoriesRepository : ICategoriesRepository
{
    private readonly ModelContainer db= new ModelContainer();

    public IQueryable<Categories> Categories 
    { 
        get
        {
            return this.db.Categories;
        }
    }

    public void SaveCategory(Categories category)
    {
        // TODO
    }

    public void DeleteCategory(Categories category)
    {
        // TODO
    }
}

次に、ビューモデルに次の行を追加する必要があります。

public class CategoryItemsViewModel
{
    public ICategoriesRepository categoriesRepository;

    public IEnumerable<Categories> GetCategories()
    {
        // This is to instantiate your repository.  It may be a better idea to do this
        // when it is declared, above.
        categoriesRepository = new CategoriesRepository();

        var cat = categoriesRepository.Categories;

        return cat;

    }
}
于 2012-08-10T20:58:28.600 に答える
1

オブジェクトnullCategoriesプロパティに設定されていないものは何も設定されていません。また、指定されたインターフェイスでは設定できません。ICategoriesRepository自動ゲッターとセッターのないプロパティがあります。これは、戻ることしかできないことを意味しますnull。セッター(パブリックまたはプライベート)がある場合は、それを他の何かに設定することができます。(実際にそれを実行するコード行も必要になります。)また、バッキングフィールド以外のものを実際に返すカスタムゲッターを使用することもできます。(これは派生データでは一般的です。)

于 2012-08-10T20:42:36.710 に答える