valor tipo que parametro metodo menos incoherencia error devuelto cs0050 accesible accesibilidad c# .net

c# - parametro - El tipo de retorno es menos accesible que el método



el tipo de parametro es menos accesible que el metodo (8)

¿Error de sintaxis?

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

debiera ser:

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

Además, simplemente puedes usar LINQ para obtener tu resultado, no estoy en VS, pero algo como esto ...

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

Soy nuevo en c# y aquí hay un extracto de un proyecto personal en el que estoy trabajando para obtener algo de experiencia.

Al llamar a la función getRecipe() fuera de esta clase, getRecipe() el siguiente error. Quiero mantener mi List privada para la clase de CookBook pero aún así poder obtener una referencia a una de las Recipes en la List . No quiero hacer pública mi List .

¡Cualquier consejo es muy apreciado! Gracias

El 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]; } }


Como indica claramente el mensaje de error, la clase de Recipe es menos accesible (por ejemplo, no es public ) que su método.


Hacer el método interno. Espero que funcione.


Hacer pública la clase de Recipe .


Haga su clase pública .. Sin que U no pueda devolver nada


Su clase de receta es menos accesible que el método. Debe verificar que la Receta no es privada / interna y que puede ver la clase Receta desde fuera del alcance de esa clase (la solución rápida declara una clase pública).

Como lo señaló Michael Stum en un comentario a continuación, las clases sin un modificador de acceso son, por defecto, internas o privadas (si se trata de una clase anidada). Es posible que este sea su problema y puede que haya declarado class Recipe lugar de public class Recipe


Verifique para asegurarse de que la visibilidad de la clase ''Receta'' cubra el lugar donde desea acceder.


public DataSet Country12() { LntSqlClient mySqlClient = new LntSqlClient(ConfigurationManager.AppSettings.Get("Data source=172.31.60.228;initial catalog=Trainee;Trusted_Connection=True;")); LntSqlParams myParam = new LntSqlParams(); DataSet dset = new DataSet(); //string strout; try { myParam.SPName = "dbo.GetState7"; myParam.addParameter("@CityId", ddlCity9.SelectedValue, mySqlClient); dset = mySqlClient.lntDataSet(myParam); //strout = myParam.LntSQLOutputParams("@error").Value.ToString(); return dset; } catch (Exception ex) { throw ex; } finally { mySqlClient.closeConnection(); } }