开发者

return type is less accessible than method

I am new to c# and here is an excerpt from a personal project i am working on to get some experience.

When calling the getRecipe() function outside this class i am presented with the following error. I want to keep my List private to the CookBook class but still be able to get a reference to one of the Recipes in the List. I do not want to make my List public.

Any advice is greatly appreciated! Thanks


The error

return type 'cookbook.Recipe is less accessible than method 'cookbook.CookBook.getRecipe(string)'

public class CookBook
{
    private List<Recipe> listOfRecipes = new List<Recipe> {};
    public Recipe get开发者_如何学JAVARecipe(string name)
    {
        int i = 0;
        while (listOfRecipes[i].getRecipeName() != name)
        {
            i++;
        }
        return listOfRecipes[i];
    }
}


Make the Recipe class public.


Your Recipe class is less accessible than the method. You should check that Recipe is not private/internal and that you can see the Recipe class from outside that class scope (quick fix declare Recipe a public class).

As pointed out by Michael Stum in a comment below classes without an access modifier are by default either internal or private (if it's a nested class). This is possibly where your issue is and you may have just declared class Recipe instead of public class Recipe


Syntax error?

private List<Recipe> listOfRecipes = new List<Recipe> {};

should be:

private List<Recipe> listOfRecipes = new List<Recipe>();

Additionally, you could simply use LINQ to get your result, I'm not in VS, but something like this...

public Recipe getRecipe(string name)
{
    return listOfRecipes.Where(c => c.RecipeName == name).SingleOrDefault();
}


As the error message clearly states, the Recipe class is less accessible (eg, not public) than your method.


Make Your Class Public ..Without That U cannot Return Anything


Check to make sure the extent if visibility of 'Recipe' class is covers where you want to access it.


In C#, by default, classes are private, So the access level is limited. Declaring your model class as public (Recipe) as public.


Make the method internal. Hope it will work.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜