C # to wieloparadygmatyczny, zarządzany obiektowy język programowania ze zbieraniem elementów bezużytecznych stworzony przez firmę Microsoft równolegle z platformą .NET
Załóżmy, że mam taką długą metodę: public void SomeLongMethod() { // Some task #1 ... // Some task #2 ... } Ta metoda nie ma powtarzalnych części, które należy przenieść do oddzielnej metody lub funkcji lokalnej. Wiele osób (w tym ja) uważa, że długie metody to zapachy kodowe. Nie podoba …
Podczas analizowania danych wejściowych od użytkownika ogólnie zaleca się, aby nie zgłaszać wyjątków i wychwytywać wyjątki, ale raczej stosować metody sprawdzania poprawności. W .NET BCL byłaby to różnica między, na przykład int.Parse(zgłasza wyjątek w przypadku nieprawidłowych danych) i int.TryParse(zwraca falsew przypadku nieprawidłowych danych). Projektuję własne Foo.TryParse(string s, out Foo result) …
Mam wiele podstawowych klas, które wymagają ISessionContext bazy danych, ILogManager dla dziennika i IService używane do komunikacji z innymi usługami. Chcę użyć wstrzykiwania zależności dla tej klasy używanej przez wszystkie podstawowe klasy. Mam dwie możliwe implementacje. Klasa podstawowa, która akceptuje IAmbientContext ze wszystkimi trzema klasami lub wstrzykuje dla wszystkich klas …
W ASP.Net Core uważam, że Claimsautoryzacja jest bardzo nieokreśloną metodą. Możemy dodać wszystko jako ClaimTypei ClaimValuesparować; grupy, imię, nazwisko, brithdate, canAccessThisURI, isEditor itp. Jednak to podejście (przechowywanie wszystkiego, co można przechowywać jako oświadczenia) spowoduje utworzenie ogromnej tabeli oświadczeń, która zawiera 50% moich danych aplikacji. Zastanawiam się, jako dobrą praktykę, jakie …
W tej serii postów na blogu Eric Lippert opisuje problem z projektowaniem obiektowym, wykorzystując jako przykład kreatorów i wojowników: abstract class Weapon { } sealed class Staff : Weapon { } sealed class Sword : Weapon { } abstract class Player { public Weapon Weapon { get; set; } } …
Niedawno przeglądałem kilka klas statycznych typu „torba narzędziowa” pomocnika unoszących się wokół dużych baz kodu C #, z którymi pracuję, w zasadzie takie jak ten bardzo skondensowany fragment kodu: // Helpers.cs public static class Helpers { public static void DoSomething() {} public static void DoSomethingElse() {} } Konkretne metody, które …
Używamy StructureMap w nowym projekcie rozwoju oprogramowania. Jeden z członków zespołu wdrożył test jednostkowy, który zasadniczo testuje konfigurację kontenera StructureMap . Robi to, wykonując następujące czynności; Liczy liczbę wystąpień zestawów skonfigurowanych dla klas w naszej przestrzeni nazw aplikacji. Definiuje oczekiwane wystąpienia na poziomie klasy Zapewnia, że oczekiwane wystąpienia są zgodne …
Przeprowadzamy wiele testów jednostkowych i refaktoryzacji naszych obiektów biznesowych i wydaje mi się, że mam bardzo odmienne opinie na temat projektowania klas niż inni koledzy. Przykładowa klasa, której nie jestem fanem: public class Foo { private string field1; private string field2; private string field3; private string field4; private string field5; …
Porównując wartości zmiennoprzecinkowe dla równości, istnieją dwa różne podejścia: NaNnie są sobie równe, co odpowiada specyfikacji IEEE 754 . NaNbędąc równym sobie, co zapewnia matematyczną właściwość Refleksyjności, która jest niezbędna do zdefiniowania relacji Równoważności Wbudowane typy zmiennoprzecinkowe IEEE w języku C # ( floati double) są zgodne z semantyką IEEE …
Próbowałem użyć Wzorca poleceń do implementacji Cofnij i Ponów w moim projekcie public abstract class Command { protected Form Receiver { set; get; } protected HtmlElement Element { set; get; } abstract public void ReDo(); abstract public void UnDo(); public Command(Form receiver) { this.Receiver = receiver; } } class AddElementCmd …
Mamy ten kod, który po uproszczeniu wygląda następująco: public class Room { public Client Client { get; set; } public long ClientId { get { return Client == null ? 0 : Client.Id; } } } public class Client { public long Id { get; set; } } Teraz mamy …
Natrafiłem na ten interesujący artykuł: How I Came to Love COM Interoperability on CodeProject, co skłoniło mnie do myślenia ... Autor twierdzi, że nie chce żadnych COM w swojej bibliotece .NET, ponieważ odbiera to piękno ich biblioteki .NET. Zamiast tego wolą napisać osobną bibliotekę Interop, która udostępnia ich bibliotekę .NET …
Załóżmy, że mam różne podmioty w moim modelu (przy użyciu EF), powiedzmy Użytkownik, Produkt, Faktura i Zamówienie. Piszę kontrolkę użytkownika, która może wydrukować podsumowania obiektów encji w mojej aplikacji, gdzie encje należą do wcześniej ustalonego zestawu, w tym przypadku mówię, że streszczenia użytkownika i produktu można podsumować. Wszystkie streszczenia będą …
Zwykle obiekty domeny mają właściwości, które mogą być reprezentowane przez wbudowany typ, ale których prawidłowe wartości stanowią podzbiór wartości, które mogą być reprezentowane przez ten typ. W takich przypadkach wartość można zapisać za pomocą wbudowanego typu, ale należy upewnić się, że wartości są zawsze sprawdzane w punkcie wejścia, w przeciwnym …
Przed opublikowaniem tego pytania przeprowadziłem kilka badań. Wśród innych pytań lub postów jedno z nich znajduje się poniżej. Nie mogłem zrozumieć, jak to ustalić ... Obiekty biznesowe w warstwie dostępu do danych Mam repozytorium, a warstwy biznesowe wywołują repozytorium w celu pobrania danych. Powiedzmy, że mam następujące klasy dla BLL …
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.