VisualStudio 100

[C#] Action.Invoke() vs Action() 차이

action.Invoke는 action?.Invoke와 같이 action 콜백이 null인지 검사하고 null이 아닐 때에만 Invoke 되도록 사용하고자 할 때 많이 사용한다. 기존 예외처리 if(_action !=null) _action.Invoke(3);// _action(3) 과 같은 코드 ? 키워드를 사용 한 예외처리 _action?.Invoke(3); //if(_action !=null)를 ?키워드를 사용하여 null임을 체크할 수 있다. action(); 는 action.Invoke()와 컴파일과정이 100프로 동일 하다. action이 null이면 NullReferenceException을 뱉기 때문에 위험하다 그래서 invoke를 사용하기 전에 null 검사를 해야 하며 기존 예외처리 처..

VisualStudio/C# 2023.01.05

[C#] nameof()와 default(T)

nameofnameof는 변수, 형식, 또는 멤버의 이름을 문자열로 반환합니다. 이는 하드코딩된 문자열을 대체하여 유지보수성을 높이는 데 유용합니다.컴파일 시 이름을 확인하므로, 오타나 잘못된 참조를 방지할 수 있습니다.코드 리팩토링 시 변수 이름이 변경되면, nameof도 자동으로 업데이트됩니다.주로 로깅, 예외 메시지, 또는 속성 이름을 출력하는 데 사용됩니다.using System;namespace NameofExample{ class Program { // 속성 정의 public string NameOfTest { get; set; } = "Initial Value"; static void Main(string[] args) { ..

VisualStudio/C# 2023.01.05

[C#] ? ?? 연산자

이전 포스팅에서는 숫자형과 불리언 타입의 변수에 null을 대입할 수 있는 Nullable 타입을 소개했습니다. 이번 포스팅에서는 null과 관련된 연산자들을 정리합니다. 목차 ?? 연산자 ??= 연산자 ?. 연산자 ?[] 연산자 ?? 연산자 피연산자가 null이 아닌 경우 왼쪽 피연산자의 값을 반환합니다. 피연산자가 null일 경우에는 오른쪽 피연산자의 값을 반환합니다. a ?? b; a가 null이면, b가 반환됩니다. a가 null이 아니면 a가 반환됩니다. ?? 연산자 사용 방법 int? a = null; // a가 null이므로 오른쪽 피연산자(29)가 반환됩니다. int b = a ?? 29; Console.WriteLine(b); 실행 결과 ??= 연산자 왼쪽 피연산자가 null일 경우 오른..

VisualStudio/C# 2023.01.03

[WCF] AppConfig 설명

이전 강좌에서는 간단한 Hello World 서비스를 작성해 보았고 그에 관련된 사항들을 살짝 맛보기로 살펴보았다. 하지만 이전 컬럼에서 작성한 코드를 살펴보면 상당히 불만족스러운 사항을 발견한 독자들이 있을 것이다. 예전에 ASP.NET으로 웹 서비스와 그 클라이언트를 작성해 본 독자라면 더더욱 그러할 것이다. 필자가 예상할 수 있는 불만사항은 이렇다. 뭐가 그렇게 복잡하게 코딩이 많이 들어가는가와 서비스의 주소나 바인딩 설정 등 하드 코딩 된 부분이 많다는 점일 것이다. 서비스의 주소를 서비스와 클라이언트가 코드 상에 직접 하드코드 하여 명시한 것과 MessageEncoding 속성 역시 코드 상에서 고정시켰던 것을 상기하면 무엇이 문제인지 알 수 있을 것이다. ASP.NET 웹 서비스 개발 경험자에..

VisualStudio/WCF 2023.01.03

[WCF] Windows 서비스 호스팅을 사용하는 WCF 서비스 라이브러리

이 응용 프로그램을 샘플로 사용하면 누구나 WCF를 사용하여 n 계층 모델에서 응용 프로그램을 설계할 수 있습니다. 소개 일반적으로 우리는 WCF 서비스를 준비하고 IIS에서 호스트합니다. 이는 시스템 외부에서 서비스에 액세스하는 다른 클라이언트가 있을 때 유용합니다. 그러나 서비스가 로컬 시스템 클라이언트를 위한 것이라면 WCF 서비스를 Windows 서비스로 호스트하는 것이 좋습니다. 이 문서에서는 WCF 서비스를 만들고 Windows 서비스로 실행하는 방법을 살펴봅니다. 이 응용 프로그램을 샘플로 사용하면 누구나 WCF를 사용하여 n 계층 모델에서 응용 프로그램을 설계할 수 있습니다. 이를 위해 우리는 서비스가 한 위치에 상주하고 다른 위치에서 호스팅되고 다른 위치에서 소비되는 계층화된 아키텍처를 ..

VisualStudio/WCF 2023.01.03

[WCF] WCF - 프록시 사용이유

클라이언트가 서비스에 대한 메타 데이터를 알아낼 수 만 있다면 서비스 프록시를 만드는데 필요한 서비스 인터페이스를 생성할 수 있다. 왜냐면 서비스 메타 데이터에는 프록시가 요구하는 서비스의 계약, 바인딩, 주소 정보가 모두 포함되어 있기 때문이다. Hello World 서비스를 예로 들어 설명하자면, 서비스 호출에 필요한 것은 IHelloWorld 인터페이스이다. 이를 위해 우리는 서비스의 구현이 포함되었던 HelloWorldService 어셈블리를 클라이언트에서 "참조" 했었다. 이러한 서버 측 구현을 참조하는 것은 서비스 지향적인 관점에 어긋날 뿐만 아니라 닷넷이 아닌 클라이언트를 사용할 수 없다는 단점이 있다는 것은 이미 지적한 바와 같다. 그렇다면 클라이언트가 IHelloWorld 인터페이스에 대..

VisualStudio/WCF 2023.01.03