2017-03-28 3 views
0

J'essaie actuellement de mettre en place un projet, mais j'ai rencontré un problème que je n'avais pas auparavant.La référence du projet ne détecte pas ma classe

Même si j'ai ajouté la référence de ma bibliothèque de classes à une autre bibliothèque de classes, elle ne peut pas trouver ma classe Events.cs.

J'ai essayé de changer le framework sur tous les projets en 3.5, 4, 4.5.2. Également essayé de redémarrer Visual Studio.

Voici ma configuration du projet:

  • Project.App (fw .NET 4.0)
  • Project.Domain (fw .NET 4.0)
    • modèles
      • Événements. cs
  • Project.Handlers (.NET 4.0) fw
    • IEventRepository.cs
    • IRepository.cs

En Project.Handlers j'ai mis une référence à Project.Domain.

Voici le code de mon Event.cs:

namespace Project.Domain.Models 
{ 
    class Event 
    { 
     public int Id { get; set; } 
     public string Name { get; set; } 
    } 
} 

Suivant mon code de mon IRepository.cs:

namespace Project.Handlers 
{ 
    internal interface IRepository<T> where T: class 
    { 
     T Get(); 
    } 
} 

Et le dernier est mon code de la IEventRepository.cs:

using Project.Domain; 
namespace Project.Handlers 
{ 
    class IEventRepository : IRepository<Event> 
    { 
     public Event Get() 
     { 
      throw new NotImplementedException(); 
     } 
    } 
} 
+3

[Niveaux d'accessibilité (C#)] (https://msdn.microsoft.com/fr-fr/library/ba0a1yw2.aspx): "Les types de niveau supérieur, qui ne sont pas imbriqués dans d'autres types, ne peuvent avoir que des niveaux internes. ou accessibilité publique L'accessibilité par défaut pour ces types est interne. " –

+0

Aussi, vous pouvez utiliser 'Project.Domain.Models' si votre classe d'événement est vraiment dans cet espace de noms – kuskmen

Répondre

3

Non accessmodifier pour votre classe Event le rendra interne par defa ult. C'est pourquoi vous ne serez pas en mesure d'y accéder à partir d'un autre projet.

Make it

public class Event { 
/// 
} 

pour pouvoir y accéder à partir d'un autre projet.

+0

Cela résout, je pensais que lorsque vous faites une nouvelle classe, la valeur par défaut serait publique. Je suppose que ce n'est pas :) –