prolink007
prolink007

Reputation: 34544

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 getRecipe(string name)
    {
        int i = 0;
        while (listOfRecipes[i].getRecipeName() != name)
        {
            i++;
        }
        return listOfRecipes[i];
    }
}

Upvotes: 55

Views: 84397

Answers (8)

Shoaib Khalil
Shoaib Khalil

Reputation: 2400

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

Upvotes: 1

snnpro
snnpro

Reputation: 307

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

Upvotes: 0

Owaix Ansari
Owaix Ansari

Reputation: 67

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

Upvotes: 0

Saif
Saif

Reputation: 444

Make the method internal. Hope it will work.

Upvotes: -1

Jesus Ramos
Jesus Ramos

Reputation: 23268

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

Upvotes: 11

CharithJ
CharithJ

Reputation: 47530

Make the Recipe class public.

Upvotes: 175

SLaks
SLaks

Reputation: 887453

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

Upvotes: 2

mservidio
mservidio

Reputation: 13057

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();
}

Upvotes: 2

Related Questions