c#
-
C# UnitTest 사용하기 (MsTest)프로그래밍/C# 2021. 3. 22. 19:21
Test 환경 구축하기 솔루션 우클릭 -> 추가 -> 새프로젝트 테스트 검색 -> 단위 테스트 프로젝트로 프로젝트 생성 UnitTestProject 종속성 클릭 -> 프로젝트 우클릭 -> 참조추가 -> 테스트할 프로젝트 추가 기본적인 구성 프로젝트 이름으로 된 .cs 파일을 열면 이러한 코드가 보입니다. 기본적인 C# 의 셋팅과의 차이는 이름 위에 [TestClass], [TestMethod] 라는 코드인데요. 이건 MsTest 에서 제공되는 특성(Attribute) 입니다. 말 그대로 저걸 클래스명 또는 메소드명 위에 적어주면, 이 코드뭉치는 테스트 코드로 사용할 것이라는 의미입니다. 이제 테스트용 메소드를 구현할 건데, 여기서 이름을 먼저 보겠습니다. 이름은 보시는것처럼 테스트하려는 메소드의 이름, ..
-
[C#] error CS0052 : 일관성 없는 엑세스 가능성프로그래밍/C# 2021. 3. 11. 12:50
A 형식이 B 필드보다 액세스 하기 어렵습니다. CS0052 error 가 발생했다면 위와 같은 문구를 보셨을 겁니다. 해결하는 법은 간단합니다.바꿔주어야 하는 것은 A 이고 A 의 클래스 또는 형식이 public 으로 선언이 되어있는지 확인해주세요. C# 은 접근제한자를 명시해주지 않으면 기본적으로 class 에 대해서는 internal, 내부의 멤버에는 private 가 기본적으로 설정됩니다. 따라서 왼쪽 코드는 internal class 로 외부에서 실행하면 접근이 불가능하게 되는 겁니다.
-
[C#] ContextMenuStrip Size 조절프로그래밍/C# 2020. 11. 6. 15:45
ContextMenuStrip ListBoxControl 에서 우클릭을 사용해서 메뉴를 볼 수 있도록 설정했습니다. 그런데 메뉴스트립의 사이즈가 너무 크네요. 메뉴 설정은 보통 아래와 같이합니다. 이렇게 하면 ContextMenuStrip 과 ToolStripMenuItem 클래스에서 AutoSize 기능에 의해 자동으로 사이즈가 설정됩니다. Font 사이즈의 경우 Window.Form 에 기본으로 설정되어 있는 설정이 적용되기 때문에 상황에 따라 클수도 작을 수도 있습니다. 그래서 아래와 같이 조절해주시면 되겠습니다.
-
[C#] Decorator Pattern프로그래밍/Design Pattern 2020. 11. 6. 13:47
Decorator Pattern 데코레이터 패턴이란 객체의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있도록 해주는 패턴이다. 즉, 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에 각 추가 기능을 Decorator 클래스로 정의 한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계 하는 방식이다. 커피를 예로 들어보자. 커피에는 카페라떼, 에스프레소, 돌체라떼 등등 수많은 종류가 있다. 커피 가격을 계산하는 프로그램을 만들려고 할때, 모든 종류의 커피객체를 만드는 것은 매우 비효율적이다. 이러한 경우에 사용하는 것이 바로 데코레이터 패턴이다. 커피는 종류는 다양하지만 결국 원두에 어떤 첨가물을 넣느냐에 차이다. 이때 우리는 원두를 Component, 첨가물을 Deco..
-
[C#] virtual, abstract, interface프로그래밍/C# 2020. 11. 5. 14:33
Virtual (가상) abstract 와는 다르게 본문을 정의할 수 있습니다. (비워 놓아도 됨) 파생 클래스에서 재정의 할 수 있습니다. 자식 클래스에서는 new 또는 override 키워드 사용이 가능합니다. override는 재정의 또는 확장의 의미 new는 기본 클래스를 숨긴다는 의미 base. 키워드를 통해 부모 클래스의 함수 호출이 가능합니다. private, static 등 접근 한정자는 사용할 수 없습니다. 더보기 public class Parent { public virtual void func1() { } } public class Child : Parent { public override void func1() { base.func1(); Console.WriteLine("재정의")..
-
[C#] Strategy Pattern프로그래밍/Design Pattern 2020. 10. 23. 15:12
전략 패턴 ( Strategy Pattern ) 최대한 간략하게 설명하자면 대부분의 메서드와 클래스를 모듈화 해서 실제로 사용할 때는 마치 부품을 조립해서 사용할 수 있도록 만드는 것이 전략패턴이 되겠습니다. Worst 와 Best 의 경우를 살펴보면 이해가 편합니다. 자동차 공정을 예시로 들어봅시다. 고객1은 모든 옵션에서 1번 옵션을 선택하고 고객2는 2번 옵션을 선택했습니다. 이 경우 하드 코딩을 한다고 가정했을때 아래와 같은 구조가 나옵니다. 고객 마다 클래스를 만들고 클래스안에 모든 메서드를 새로 작성하여 때려박는 방식이죠. 이러한 하드코딩의 장단점은 분명합니다. 장점 : 구현이 쉽고 빠르다. 단점 : 유지보수가 어렵다. 그래서 우리는 이러한 경우전략패턴을 사용합니다. 모든 모듈을 모듈화 하고 ..
-
[C#] Delegate 를 이용해 폼 간 데이터 전송하기프로그래밍/C# 2020. 10. 8. 15:18
델리게이트(Delegate) 해석하면 '대리인' 이라는 뜻으로 메서드를 참조하는 변수입니다. 델리게이트의 매개변수에 특정 메서드를 추가시켜주면 해당 델리게이트는 그 메서드를 실행시킬 수 있게 됩니다. 말로는 복잡하니 예제를 보면서 이해하시기 바랍니다. Delegate 를 이용해 폼 간 데이터 전송하기 자식 폼의 TextBox 내용을 부모 폼으로 전달하는 간단한 예제를 구현해볼 겁니다. 우선이게 두 개의 폼의 소스코드입니다. 여기서 우리는 델리게이트가 어떤 식으로 사용되었는지를 파악해볼 겁니다. 번호 순서대로 화살표를 따라가면서 설명을 읽어주세요. 1번 : 델리게이트를 원하는 반환형과 참조형을 사용하여 생성해주었습니다. 이거는 우리가 델리게이트 변수를 인스턴스 할 수 있도록 틀을 만든 것과 같습니다. 마치..
-
[C#] TextBox 에 찾기바꾸기 기능 활용프로그래밍/C# 2020. 9. 29. 15:48
ScintillaNET_FindReplaceDialog NuGet 패키지 활용하기 NuGet 패키지 관리에서 ScintillaNET_FindReplaceDialog 패키지를 다운로드해주세요. 이 패키지의 주요 기능은 다음과 같습니다. 또한 이미 구현된 Dialog 를 사용하기 때문에 코드 몇 줄이면 사용이 가능합니다. 1. 검색 2. 바꾸기 3. 검색 단어 강조 4. 검색 단어를 포함하는 줄 강조 5. 특정 라인으로 이동 코드 적용하기 간단한 인스턴스만 하나 해주시면 바로 사용이 가능합니다. using ScintillaNET_FindReplaceDialog; // FindReplace Declare private FindReplace MyFindReplace; KeyDown 이벤트를 통해 단축기를 만들 ..