«c#» 태그된 질문

C #은 Microsoft에서 .NET 플랫폼과 병렬로 생성 한 다중 패러다임, 관리, 가비지 수집 개체 지향 프로그래밍 언어입니다.

5
긴 메소드 리팩토링 : 그대로두고 메소드로 분리 vs 로컬 함수 사용
다음과 같은 긴 방법이 있다고 가정하십시오. public void SomeLongMethod() { // Some task #1 ... // Some task #2 ... } 이 방법에는 별도의 방법이나 로컬 기능으로 이동해야하는 반복적 인 부분이 없습니다. 긴 방법이 코드 냄새라고 생각하는 사람들이 (나를 포함하여) 많이 있습니다. 또한 #region여기에 (s) 를 사용하는 것을 좋아하지 않으며 …

3
구문 분석 오류가 발생할 경우 자세한 정보를 제공하는 TryParse 메서드를 어떻게 디자인합니까?
사용자 입력을 구문 분석 할 때 일반적으로 예외를 throw하지 않고 확인 메소드를 사용하는 것이 좋습니다 . .NET BCL에서 이는 예를 들어 int.Parse(유효하지 않은 데이터에 대해 예외가 발생 함)과 int.TryParse( false유효하지 않은 데이터가 반환 됨)의 차이입니다. 나는 내 자신을 디자인하고 있습니다 Foo.TryParse(string s, out Foo result) 메서드와 반환 값이 확실하지 않습니다. …
9 c#  .net  api-design 

4
주변 컨텍스트와 생성자 주입
데이터베이스의 ISessionContext, 로그의 경우 ILogManager 및 다른 서비스와의 통신에 사용되는 IService가 필요한 많은 핵심 클래스가 있습니다. 모든 핵심 클래스에서 사용하는이 클래스에 종속성 주입을 사용하고 싶습니다. 두 가지 가능한 구현이 있습니다. 세 클래스 모두에서 IAmbientContext를 허용하거나 모든 클래스에 세 클래스를 삽입하는 핵심 클래스입니다. public interface ISessionContext { ... } public class …

2
클레임으로 어떤 데이터를 저장해야합니까?
ASP.Net Core에서 Claims권한 부여가 매우 정확 하지 않은 방법 이라는 것을 알았습니다 . 우리는 무엇이든 추가 ClaimType하고 ClaimValue짝을 지을 수 있습니다 . 그룹, 이름, 성, brithdate, canAccessThisURI, isEditor 등입니다. 그러나이 방법 (클레임으로 저장할 수있는 모든 것을 저장)은 내 응용 프로그램 데이터의 50 %를 포함하는 거대한 클레임 테이블을 만듭니다. 모범 사례로서 …

7
마법사와 전사의 규칙 우회
에서 블로그 게시물이 시리즈 , 에릭 Lippert의이 마법사와 예제로 전사를 사용하여 객체 지향 설계에서 문제를 설명 : abstract class Weapon { } sealed class Staff : Weapon { } sealed class Sword : Weapon { } abstract class Player { public Weapon Weapon { get; set; } } sealed class …

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 의미론을 따라야합니까?
부동 소수점 값이 동일한 지 비교할 때 두 가지 접근 방식이 있습니다. NaNIEEE 754 사양 과 일치하지 않습니다 . NaN등가 관계 의 정의에 필수적인 반사성 의 수학적 특성을 제공 C # ( float및 double) 에 내장 된 IEEE 부동 소수점 유형은 ==및 !=(및 같은 관계 연산자 &lt;)에 대한 IEEE 의미를 …

1
명령 객체를 올바른 수신자와 어떻게 연결합니까?
프로젝트에서 실행 취소 및 다시 실행을 구현 하기 위해 명령 패턴 을 사용하려고했습니다. 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
COM 제한 사항을 염두에두고 .NET 라이브러리를 작성하거나 .NET 라이브러리를 Interop과 분리하는 것이 더 좋습니까?
나는이 흥미로운 기사를 보았습니다 : CodeProject에서 COM 상호 운용성을 사랑하는 방법은 무엇입니까? 저자는 .NET 라이브러리의 아름다움을 없애기 때문에 .NET 라이브러리에서 COM 요소를 원하지 않는다고 주장합니다. 대신 .NET 라이브러리를 COM에 공개하는 별도의 Interop 라이브러리를 작성하려고합니다. 이 Interop 라이브러리는 COM이 매개 변수, 오버로드 된 메서드, 제네릭, 상속, 정적 메서드 등을 가진 생성자를 …

3
데이터 유형에 인터페이스를 사용하는 것이 안티 패턴입니까?
사용자, 제품, 송장 및 주문과 같이 모델에 EF를 사용하는 다양한 엔터티가 있다고 가정합니다. 엔티티가 사전 결정된 세트에 속하는 응용 프로그램에서 엔티티 객체의 요약을 인쇄 할 수있는 사용자 정의 컨트롤을 작성 중입니다.이 경우 사용자 및 제품 요약을 요약 할 수 있다고 말합니다. 요약에는 모두 ID와 설명 만 포함되므로 이에 대한 간단한 …

4
구조체를 사용하여 내장 유형의 유효성 검사
일반적으로 도메인 개체에는 기본 제공 형식으로 표시 될 수 있지만 유효한 값은 해당 형식으로 표시 될 수있는 값의 하위 집합 인 속성이 있습니다. 이 경우 내장 유형을 사용하여 값을 저장할 수 있지만 입력 시점에서 항상 값의 유효성을 검사해야합니다. 그렇지 않으면 유효하지 않은 값으로 작업 할 수 있습니다. 이를 해결하는 한 …
9 c#  .net 

4
DAL과 BLL 계층간에 데이터 및 비즈니스 오브젝트 검색 분리
이 질문을 게시하기 전에 몇 가지 조사를 수행했습니다. 다른 질문이나 게시물 중 하나가 아래에 제공됩니다. 어떻게 결정해야할지 모르겠다 데이터 액세스 계층 내의 비즈니스 개체 리포지토리가 있고 비즈니스 계층에서 리포지토리를 호출하여 데이터를 검색합니다. 예를 들어, BLL 및 DAL에 대해 다음과 같은 클래스가 있다고 가정하십시오. class BllCustomer { public int CustomerId {get; …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.