c# - error - incoherencia de accesibilidad el tipo de parámetro es menos accesible que el método
C#: accesibilidad incoherente: tipo de propiedad (4)
¿Cuál es la accesibilidad en TabViewModel
? Supongo que no es público.
Qué hay de malo en
public partial class MainWindow : Window
{
public ObservableCollection<TabViewModel> Tabs { get; set; }
public ICollectionView TabsViewSource { get; set; }
public int CurrentIndex { get { return TabsViewSource.CurrentPosition; } }
yo obtengo
Accesibilidad incoherente: el tipo de propiedad ''System.Collections.ObjectModel.ObservableCollection'' es menos accesible que la propiedad ''TabsRendering.MainWindow.Tabs''
cuando cambio el código a
public partial class MainWindow : Window
{
ObservableCollection<TabViewModel> Tabs { get; set; }
public ICollectionView TabsViewSource { get; set; }
public int CurrentIndex { get { return TabsViewSource.CurrentPosition; } }
Funciona. ¿Qué pasa con el public
en el ObservableCollection
El mensaje es muy directo. Es contradictorio con lo que quieres hacer. Dice que tienes algo declarado como público (Pestañas, en este caso) pero el tipo que lo usaría también necesita saber acerca de TabViewModel que no es público. Haga público o algún especificador de acceso coherente.
Haga de TabViewModel
un tipo público también.
Obviamente, no tiene sentido que una propiedad pública sobre un tipo contenedor público sea de un tipo que no sea público. ¿Cómo podría la propiedad presentarse a asambleas externas?
Su segunda muestra funciona porque, como regla general, el hecho de no proporcionar modificadores de accesibilidad significa que el modificador menos aplicable se elige como el predeterminado, en este caso: privado. Claramente, no hay problemas de consistencia al declarar una propiedad privada de tipo interno (?).
Toda la información anterior es completamente correcta y funciona bien. Solo quiero agregar por experiencia personal que si está usando TFS y obtiene su proyecto de TFS, las diferentes versiones de Visual Studio también pueden generar este error.
Ingresé a un proyecto con Visual Studio 2013 actualización 2 y sincronicé con TFS para obtener la solución. Cuando traté de ejecutar el proyecto, obtuve 80 errores. Todos ellos eran como "... menos accesible que la propiedad ...". Ahora resulta que necesitaba la actualización 4. Una vez que mi Visual Studio se actualizó, reverenciaba los cambios y funcionó perfectamente.
Esto podría ser útil si ninguno de los anteriores funciona y está usando TFS.