Вопросы с тегом «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пару; groups, firstname, фамилия, brithdate, canAccessThisURI, isEditor и т. д. Однако этот подход (хранение всего, что может быть сохранено как утверждения) создаст огромную таблицу утверждений, которая включает 50% данных моего приложения. Как хорошая …

7
Обход правил у волшебников и воинов
В этой серии постов в блоге Эрик Липперт описывает проблему объектно-ориентированного проектирования на примере мастеров и воинов, где: abstract class Weapon { } sealed class Staff : Weapon { } sealed class Sword : Weapon { } abstract class Player { public Weapon Weapon { get; set; } } sealed …

3
Шаблон C # для чистой обработки «свободных функций», избегая статических классов «вспомогательного пакета» в стиле Helper
Недавно я рассматривал несколько статических классов «вспомогательных пакетов» в стиле Хелпера, плавающих вокруг больших кодовых баз 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) …


6
Как реализовать свойство класса A, которое ссылается на свойство дочернего объекта класса A
У нас есть этот код, который при упрощении выглядит следующим образом: 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; } …
9 c#  code-quality  null 

3
Лучше написать библиотеку .NET с учетом ограничений COM или отделить библиотеку .NET от Interop?
Я наткнулся на эту интересную статью: как я полюбил COM-совместимость в CodeProject, и это заставило меня задуматься ... Автор утверждает, что они не хотят никаких COM-объектов в своей библиотеке .NET, потому что это лишает красоту их библиотеки .NET. Вместо этого они предпочли бы написать отдельную библиотеку Interop, которая предоставляет свою …

3
Является ли использование интерфейсов для типов данных анти-паттерном?
Предположим, у меня есть различные объекты в моей модели (с использованием EF), например, Пользователь, Продукт, Счет-фактура и Заказ. Я пишу пользовательский элемент управления, который может распечатывать сводки объектов сущностей в моем приложении, где сущности принадлежат заранее определенному набору, в этом случае я говорю, что сводки пользователей и продуктов можно суммировать. …

4
Использование структуры для проверки правильности встроенного типа
Обычно доменные объекты имеют свойства, которые могут быть представлены встроенным типом, но допустимые значения которых являются подмножеством значений, которые могут быть представлены этим типом. В этих случаях значение может быть сохранено с использованием встроенного типа, но необходимо убедиться, что значения всегда проверяются в точке входа, в противном случае мы можем …
9 c#  .net 

4
Разделение извлечения данных и бизнес-объектов между уровнями DAL и BLL
Я провел некоторое исследование, прежде чем опубликовать этот вопрос. Среди других вопросов или постов, один из них приведен ниже. Я не мог понять, как определить .. Бизнес-объекты на уровне доступа к данным У меня есть хранилище, и бизнес-уровни вызывают хранилище для получения данных. Например, скажем, у меня есть следующие классы …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.