Mam następujące projekty w Visual rozwiązania Studio dla aplikacji:czynienia z teksty stałe gdy interfejsy są w odrębnym projekcie
- Common - metody użytkowe i rozszerzenia
- Podmioty - Rich Domain obiektów z logiki biznesowej konkretnej do instancji
- - repozytoria danych Przechowalnie
- DataServices - Cienki wrapper do repozytoriów zawiera specyficzną logikę biznesową nie do instancji
- interfejsie es - Wszystkie interfejsy dla encji i repozytoriów
Powodem, dla którego umieściłem interfejsy w osobnym projekcie, jest unikanie odwołań do projektów kołowych. Dzięki temu dwa projekty mogą odwoływać się do wspólnego interfejsu, unikając zarówno odniesienia projektu do konkretnej realizacji.
Celowo nie dokonałem żadnych odniesień do projektu w projekcie Interfejsy, aby uniknąć odniesień do projektów kołowych. Tworzę interfejs dla klas zdefiniowanych w innych projektach, co pozwala mi odwoływać się do interfejsu obiektu, w przeciwieństwie do konkretnej implementacji w innych interfejsach.
Więc przykładem będzie:
namespace Acme.Entities
{
public class Person : IPerson
{
string Name { get; set; }
}
}
namespace Acme.Interfaces
{
public interface IPerson
{
string Name { get; set; }
}
}
namespace Acme.Interfaces
{
public interface ITeam
{
string Name { get; set; }
IPerson Leader { get; set; }
}
}
Kwestia Zabrakło mi na to, kiedy Interfejs odwołuje enum zdefiniowane w innym projekcie. Bez przesuwania wyliczenia ramach projektu interfejsy, nie jestem pewien, jak odwołać się do wyliczenia bez tworzenia odniesień projektu, na przykład:
namespace Acme.Entities
{
public enum Status
{
Unknown =0,
Active = 1,
Active = 2
}
}
namespace Acme.Interfaces
{
public interface IPerson
{
string Name { get; set; }
Acme.Entities.Status ActiveStatus { get; set; }
}
}
Acme.Entities.Status zawiedzie chyba odwołać projekt Acme.Entities , ale utworzy to okólnik, ponieważ Acme.Entities odwołuje się do projektu Interfaces.
Dlaczego sprzeciwiasz się przeniesieniu enum do projektu Interface? –
Muszę iść z @DStanley tutaj. Prawdopodobnie chcesz zmienić nazwę projektu 'Interfaces' na' Common'. –