C # to wieloparadygmatyczny, zarządzany obiektowy język programowania ze zbieraniem elementów bezużytecznych stworzony przez firmę Microsoft równolegle z platformą .NET
Opracowujemy nowy projekt, który ma zostać wdrożony na dużej liczbie witryn klienckich. Projekt zawiera graficzny interfejs użytkownika jako jeden z „punktów dostępu”. Szybkość interfejsu internetowego jest priorytetem w tym projekcie, ustępując jedynie bezpieczeństwu. W przeszłości zawsze tworzyliśmy „strony internetowe” w Visual Studio, które po opublikowaniu dają jeden plik dll i …
W przeszłości zwykle manipulowałem obiektem w ramach podstawowej metody, która jest tworzona / aktualizowana, ale ostatnio przyjąłem inne podejście i jestem ciekawy, czy to zła praktyka. Oto przykład. Załóżmy, że mam repozytorium, które akceptuje Userbyty, ale przed wstawieniem bytu wywołujemy niektóre metody, aby upewnić się, że wszystkie jego pola są …
Widzę, że używam coraz więcej niezmiennych typów, gdy nie oczekuje się, że instancje klasy zostaną zmienione . Wymaga więcej pracy (patrz przykład poniżej), ale ułatwia korzystanie z typów w środowisku wielowątkowym. Jednocześnie rzadko widzę niezmienne typy w innych aplikacjach, nawet jeśli zmienność nie przyniosłaby nikomu korzyści. Pytanie: Dlaczego niezmienne typy …
Kontekst Używałem z hierarchią obiektów (drzewa wyrażeń) wzorca „pseudo” użytkownika (pseudo, ponieważ w nim nie stosuje podwójnej wysyłki): public interface MyInterface { void Accept(SomeClass operationClass); } public class MyImpl : MyInterface { public void Accept(SomeClass operationClass) { operationClass.DoSomething(); operationClass.DoSomethingElse(); // ... and so on ... } } Ten projekt był …
Tworzyłem więc warstwę dostępu do danych za pośrednictwem TDD i podniosłem nieco problem. Wolę nie zaczynać złą drogą, więc pomyślałem, że poproszę was, abyście sprawdzili, czy moje myśli są zgodne z czystą architekturą. Metody w mojej warstwie dostępu do danych (w skrócie DAL) są dość proste. Są one zgodne z …
Za pomocą AOP mogę usunąć kod logowania z logiki biznesowej. Ale myślę, że można go używać tylko do rejestrowania prostych rzeczy (tj. Rejestrowania metody wejścia / wyjścia i wartości parametrów). A jeśli jednak muszę coś zalogować w logice biznesowej? na przykład public void SomeDomainMethod(string id) { //Get user by Id …
Jestem inżynierem elektrykiem i nie wiem, co do diabła robię. Proszę zapisać przyszłych opiekunów mojego kodu. Ostatnio pracowałem nad kilkoma mniejszymi programami (w języku C #), których funkcjonalność jest logicznie „proceduralna”. Na przykład jednym z nich jest program, który zbiera informacje z różnych baz danych, wykorzystuje te informacje do generowania …
Wiele tutoriali na temat DDD, które studiowałem, dotyczy głównie teorii. Wszystkie mają podstawowe przykłady kodu (Pluralsight i podobne). W Internecie próbuje się również kilka osób, aby stworzyć samouczki dotyczące DDD z EF. Jeśli zaczniesz je studiować krótko - szybko zauważysz, że bardzo się od siebie różnią. Niektóre osoby zalecają, aby …
IComparable działa tylko w jedną stronę Powiedzmy, że masz Employeeklasę. W jednym widoku chcesz pokazać wszystkie Employeesposortowane według nazwy - w innym według adresu. Jak zamierzasz to osiągnąć? Nie z IComparable, przynajmniej nie w idiomatyczny sposób. IComparable ma logikę w niewłaściwym miejscu Interfejs jest używany przez wywołanie .Sort(). W widoku …
Mam test jednostkowy, który wygląda następująco: [Test] public void Should_create_person() { Assert.DoesNotThrow(() => new Person(Guid.NewGuid(), new DateTime(1972, 01, 01)); } Zapewniam, że tutaj utworzono obiekt Person, tzn. Że sprawdzanie poprawności nie kończy się niepowodzeniem. Na przykład, jeśli Guid ma wartość zerową lub data urodzenia jest wcześniejsza niż 01.01.1900, wówczas sprawdzanie …
Java i .NET mają wspaniałe kolektory śmieci, które zarządzają pamięcią dla Ciebie, i wygodne wzorce do szybkiego uwalniania obiektów zewnętrznych ( Closeable, IDisposable), ale tylko jeśli są własnością jednego obiektu. W niektórych systemach zasób może wymagać niezależnego zużycia przez dwa składniki i może zostać zwolniony tylko wtedy, gdy oba składniki …
Jestem programistą C ++, który do tej pory używa wzorca MVC do projektowania GUI. Ostatnio chciałem wrócić do C # i skonfigurowałem aplikację Windows Forms, ale teraz trochę się zagubiłem, jak przenieść ją do struktury zgodnej z MVC. Obecnie próbuję „zadeklarować” klasę, którą otrzymałem dla WinForm jako Widok, i dodać …
Powiedzmy, że mamy następujący interfejs - interface IDatabase { string ConnectionString{get;set;} void ExecuteNoQuery(string sql); void ExecuteNoQuery(string[] sql); //Various other methods all requiring ConnectionString to be set } Warunkiem jest ustawienie / zainicjowanie ConnectionString przed uruchomieniem dowolnej metody. Ten warunek można w pewnym stopniu osiągnąć, przekazując połączenieString za pośrednictwem konstruktora, jeśli …
W naszej logice biznesowej czasami mamy zdefiniowane metody, takie jak to: User.ResetCourse(Course courseToReset) Problem polega na tym, że zarówno Użytkownik, jak i Kurs są obiektami proxy Entity Framework. Oznacza to, że kiedy trafimy na właściwości nawigacji użytkownika lub kursu, może to spowodować ogromne trafienie w bazie danych, ponieważ obiektów tych …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.