nickemannen skrev:
Antingen kan du ju använda dig av internal på repositoryt så att i den koden han sitter kan han inte komma åt repository alls. För att lösa testningen så fungerar ju InternalsVisibleTo(testprojekt).
Nja jag kan inte sätta Internal i Repositoryt eftersom det ligger i ett eget assembly, det skulle vara om man lyckas sätta det på metoden i interfacet, har aldrig testat men spontant känns det som det inte borde gå....
spin skrev:
Menar du att din webutvecklare skriver egna implementationer av ICustomerRepository
Nej då, han (han finns inte, det är ett påhittat exempel) använder sig av Interfacet som finns, men eftersom interfacet är en referens till mitt repository så kan han ta bort användaren i databasen utan att ta bort data som har referenser till denna användare.
spin skrev:
Ett annat förfarande, när man tänker outside the box, är att faktiskt inte ta bort användaren - utan bara markera den som inaktiv/"död". Det kan givetvis få konsekvenser om samma användare vill återregistrera sig, men det är absolut inte olösliga problem.
Nja.. säga att användaren har en massa stora filer som bara ligger och tar plats, om användaren försvinner så kan man ju ta bort dessa filer och därmed skapas uttrymme... elleså måste man köra en del logik kod om man tar bort användaren och den koden bör ligga i domänen och inte i repositoryt.
Så det jag vill egentligen är att ha 2 vyer på mitt interface.
När jag är i min AppServices så skall interfacet se ut så här.
public interface ICustomerRepository {
void Delete(Customer customer);
Cusomer GetByIdentifier(Guid identifier);
}
och om jag är någon annanstans i koden så skall interfacet se ut så här:
public interface ICustomerRepository {
Cusomer GetByIdentifier(Guid identifier);
}
Vilket så fall tvingar andra utvecklare att ställa sig frågan, hur tar jag bort en Kund? Och där med leta upp min AppServices som finns. För annars är risken att de bara använder sig av ICustomerRepository.Delete() och så blir det inte riktigt bra i slutändan.
Det går ju att lösa med 2 olika interface men det är inte heller riktigt vad jag vill...
- M