Reputation: 34544
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
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
Reputation: 307
Check to make sure the extent if visibility of 'Recipe' class is covers where you want to access it.
Upvotes: 0
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
Reputation: 887453
As the error message clearly states, the Recipe
class is less accessible (eg, not public
) than your method.
Upvotes: 2
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