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.
精彩评论