Запитання з тегом «c#»

C # - це багатопарадигмна керована об'єктно-орієнтована мова програмування, що збирається сміттям, створена Microsoft паралельно з платформою .NET

5
Довгий метод рефакторингу: залишаючи як розділення на методи проти використання локальних функцій
Припустимо, у мене давно такий метод: public void SomeLongMethod() { // Some task #1 ... // Some task #2 ... } У цього методу немає повторюваних частин, які слід перемістити в окремий метод або локальну функцію. Є багато людей (включаючи мене), які думають, що довгі методи - це кодовий запах. …

3
Як я б створив метод TryParse, який надає детальну інформацію у випадку помилки розбору?
Під час розбору вводу користувача, як правило, рекомендується не кидати та виловлювати винятки, а скоріше використовувати методи перевірки. У .NET BCL це буде різниця між, наприклад, int.Parse(кидає виняток щодо недійсних даних) та int.TryParse(поверненням falseнедійсних даних). Я проектую своє Foo.TryParse(string s, out Foo result) метод, і я не впевнений у поверненому …
9 c#  .net  api-design 

4
навколишній контекст проти введення конструктора
У мене багато основних класів, які потребують ISessionContext бази даних, ILogManager для журналу та IService, що використовується для спілкування з іншими службами. Я хочу використовувати введення залежності для цього класу, що використовується всіма основними класами. У мене є дві можливі реалізації. Основний клас, який приймає IAmbientContext з усіма трьома класами …

2
Які дані слід зберігати як "Претензія"?
В ASP.Net Core я вважаю, що Claimsавторизація є дуже не конкретним методом. Ми можемо додати що-небудь як ClaimTypeі ClaimValueпари; групи, ім'я, прізвище, brithdate, canAccessThisURI, isEditor тощо. Однак такий підхід (зберігання всього, що може бути збережено як претензії) створить величезну таблицю претензій, яка включає 50% моїх даних програми. Мені цікаво, як …

7
Обхід Правил у Чарівниках та Воїнах
У цій серії публікацій блогу Ерік Ліпперт описує проблему в об'єктно-орієнтованому дизайні, використовуючи в якості прикладів майстрів та воїнів, де: abstract class Weapon { } sealed class Staff : Weapon { } sealed class Sword : Weapon { } abstract class Player { public Weapon Weapon { get; set; } …

3
Структура C # для чистої обробки "вільних функцій", уникаючи статичних класів у стилі "помічник"
Нещодавно я переглядав декілька статичних класів «допоміжних мішків» у стилі помічника, що плавають навколо деяких великих C # баз кодів, з якими я працюю, в основному такі речі, як наступний дуже ущільнений фрагмент: // Helpers.cs public static class Helpers { public static void DoSomething() {} public static void DoSomethingElse() {} …

6
Якщо модульні тести охоплюють лише функціональне програмне забезпечення
Ми використовуємо StructureMap в новому проекті розробки програмного забезпечення. Один з членів команди здійснив тестовий модуль, який в основному тестує конфігурацію контейнера StructureMap . Це роблять, роблячи наступне; Підраховує кількість екземплярів збірок, налаштованих для класів у нашому просторі імен додатків. Визначає очікувані екземпляри на рівні класу Стверджує, що очікувані екземпляри …

4
Як сперечатися з цією «повністю публічною» умовою дизайну класу бізнес-об’єктів
Ми проводимо багато тестування та рефакторинг наших бізнес-об’єктів, і, здається, у мене дуже різні думки щодо дизайну класів, ніж інші колеги. Приклад класу, який я не шанувальник: public class Foo { private string field1; private string field2; private string field3; private string field4; private string field5; public Foo() { } …

2
Чи повинен `Vector <float> .Equals` бути рефлексивним чи він повинен дотримуватися семантики IEEE 754?
При порівнянні значень з плаваючою комою для рівності існує два різних підходи: NaNне дорівнює собі, що відповідає специфікації IEEE 754 . NaNрівність собі, що забезпечує математичну властивість рефлексивності, що має істотне значення для визначення відношення еквівалентності Вбудований в IEEE з плаваючою точкою типу в C # ( floatі double) слід …

1
Як я пов’язую командні об'єкти з правильним приймачем?
Я намагався використовувати командний зразок для реалізації Undo і Redo у своєму проекті 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 …


3
Краще написати свою бібліотеку .NET, маючи на увазі обмеження COM, або відокремити свою .NET-бібліотеку від Interop?
Я натрапив на цю цікаву статтю: Як я полюбив сумісність COM у програмі CodeProject, яка змусила мене задуматися ... Автор стверджує, що вони не хочуть ніяких COM-програм у своїй бібліотеці .NET, оскільки це відбирає красу їхньої бібліотеки .NET. Натомість вони б краще написати окрему бібліотеку Interop, яка виставляє їхню .NET-бібліотеку …

3
Чи використання інтерфейсів для типів даних є антитілом?
Припустимо, у моїй моделі є різні об'єкти (використовуючи EF), скажімо, користувач, товар, рахунок-фактура та замовлення. Я пишу користувальницький елемент управління, який може друкувати підсумки об’єктів сутності у моїй програмі, коли об'єкти належать до попередньо прийнятого набору, у цьому випадку я кажу, що резюме користувача та продукту можна узагальнити. У всіх …

4
Використання структури для примусової перевірки вбудованого типу
Як правило, об'єкти домену мають властивості, які можуть бути представлені вбудованим типом, але дійсні значення яких є набором значень, які можуть бути представлені цим типом. У цих випадках значення можна зберігати за допомогою вбудованого типу, але необхідно забезпечити, щоб значення завжди були перевірені в точці введення, інакше ми можемо закінчити …
9 c#  .net 

4
Розмежування отримання даних та об’єктів бізнесу між шарами DAL та BLL
Я зробив кілька досліджень, перш ніж розміщувати це питання. Серед інших запитань чи публікацій, одне із них подано нижче. Я не міг зрозуміти, як визначити .. Бізнес-об'єкти в рівні доступу до даних У мене є сховище, і бізнес-шари викликають сховище для отримання даних. Наприклад, скажіть, що у мене є такі …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.