mvvm패턴 샘플을 인터넷에서 찾아 만드는데 'ICommand'를 상속하여 오버라이드(재정의, ovrride)를 하려고 하니 다음과 같은 에러 메시지가 나옵니다. 재정의할 적절한 메서드를 찾을 수 없습니다(no suitable method found to override) 1. 오류의 원인 MSDN을 뒤져보니 "컴파일러 오류 CS0115"라는 것이 있군요. (참고 : MS Docs - 컴파일러 오류 CS0115 ) 설명의 뜻은 1) 베이스로 지정안되있는 녀석을 오버라이드를 시도했거나 2) 오버로드를 해야 하는 녀석(파라메타가 다르다던가 이름이 다르다던가) 해야 할 녀석을 오버라이드 했다 입니다. 2. 해결 방법 결국 해결법은 1. 올바른 베이스를 지정한다. 2. 'override' 키워드를 뺀다.(오버라..
개발이 막바지에 오고 기능구현 단계가 지나가면 최적화 작업을 하게 됩니다. 이때 각 구간별로 시걸린 시간을 측정하는 것이 중요하죠. 이 걸린시간을 기반으로 어디를 어떻게 수정해야할지 계획을 잡을수 있으니까요. 이때 사용하는것이 디버깅 메시지와 틱(Tick)입니다. 틱은 자신의 컴퓨터에서 시간을 계산하는 최소 단위입니다. 보통 1틱은 100나노초( == 1/10000000 )입니다. 닷넷에서는 DateTime.Now.Ticks 이렇게 해서 가저 올수 있죠, (참고 : MSDN - DateTime.Ticks 속성) 디버깅 메시지는 일반적인 툴들에서 모두 지원하는 기능으로 개발툴의 콘솔화면(혹은 특정 화면)에 개발자가 심어놓은 메시지를 출력하는 기능입니다. 닷넷에서는 Debug.WriteLine("메시지");..
XML을 다루다 보면 노드를 통으로 복사하거나 옮겨야 할 때가 있습니다. 닷넷에서는 그런 동작을 할 때 'ImportNode'를 사용합니다. (참고 : MSDN - ImportNode ) 이전 글에서 처럼 테스트 데이터를 도큐먼트로 생성하여 사용합니다. 연관글 영역 1. 테스트 데이터 1-0 2-0 3-0 1-1 3-1 1-2 2-2 3-2 2. 노드(Node) 복사 노드(Node)를 복사하기 위해서는 1) 복사하려는 노드를 찾는다. 2) 'ImportNode'로 해당 로드를 복사한다. 3) 대상에 복사된 노드를 추가시킨다. 이런 순서로 하게 됩니다. //도큐 생성 XmlDocument xDocOriginal = new XmlDocument(); xDocOriginal.LoadXml(sDataOrigin..
비주얼 베이직(Visual Basic, VB)에서 편하게 썼던 문자열 처리 함수가 Mid를 비롯한 Left와 Right입니다. Mid : 문자열에서 지정된 인덱스에서부터 지정된 개수만큼 문자열 반환 Left : 왼쪽서부터 지정된 개수만큼 문자열 반환 Right : 오른쪽에서부터 지정된 개수만큼 무자열 반환 C#에는 'Mid'역할을 하는 'Substring'가 있는데 이것을 이용하여 'Left'와 'Right'를 구현할 수 있습니다. 물론 예외처리를 위해 'Mid'도 구현하면 좋죠 ㅎㅎㅎ 그 방법 외에도 'VB'를 참조하여 직접 'Mid', 'Left', 'Right'를 가져와 사용할 수도 있습니다. 참고로 'Mid'의 시작 위치는 1부터 시작합니다.(0부터 시작하면 에러가 남) 그러니 인덱스 방식으로 사..
디버그 심볼이란것은 빌드를 할때 디버깅이냐 릴리즈이냐에 따라 특정코드를 빼고 넣고 하는 기능입니다. 예를 들면 디버깅 할때는 A_DEV라는 클래스를 참조하여 디버깅이 쉽게 할수 있지만 릴리즈때는 A클래스를 참조 시켜 퍼포먼스 최적화를 노린다던가 할때 사용합니다. 저는 디버깅용 모듈을 만들어 쓰는 것을 좋아해서 디버깅 심볼을 자주 쓰진 않았습니다. 디버깅용 모듈을 만들면 릴리즈모드에서도 특정동작으로 디버그 메시지 같은 것을 출력할수 있게 하여서 디버깅이 쉽게 할수 있다는 장점 때문이죠 ㅎㅎㅎ 프로그램이 무거워 진다는 단점이 있지만 OTL 실버라이트로 넘어오니 웹서비스때문에 디버그 심볼을 자주 이용하게 되서 정리해 둡니다. 1.디버그 심볼 지정하기비주얼 스트디오에서 프로젝트 속성 > 빌드 > 조건부 컴파일 ..
Cannot create ActiveX component. 이 에러는 엑티브엑스 형태의 DLL을 사용할때 나는 에러입니다. 이런 dll은 그냥 참조도 안되죠 ㅡ,.ㅡ; 컴이나 어셈형태만 참조가능요~ 일단 Regsvr32를 사용하여 dll을 등록 해야 합니다. 참고 : MS고객지원 센트 - Regsvr32 사용법 및 오류 메시지 설명 명령프롬프트로 가서 regsvr32 [dll이름] 하심후 잠시 있으면 아래와 같이 등록됬다는 메시지가 나옵니다. 이렇게 등록을 해주면 참조도 가능합니다.
관련글 c++ DLL을 C#에서 사용해보자 ( 함수 마샬링 ) c++ DLL을 C#에서 사용해보자 ( 클래스 마샬링 ) 클래스 마샬링을 할일이 없엇 신경을 안쓰다가 요번에 스카이프 api나 제가 직접 마샬링 해볼까 해서 클래스 마샬링을 정리해 보았습니다. 근데 왜이렇게 자료가 없지? 겨우 찾은것이 비주얼C++ 팀블로그인데....네...영어입니다 ㅡ.-; (참고 : Visual C++ Team Blog - Inheriting From a Native C++ Class in C#) 일단 변환방법이 마음에 들지가 않아서 위글에 있는 내용을 그대로 사용하여 만들고 자료를 더 찾는다면 파트2로 돌아오 겠습니다 ㅎㅎㅎㅎ 그전에 이 글은 크게 2부분으로 나누어 설명할 예정입니다. 어찌됬건 프로그래머라면 일단 샘플부터..
닷넷이나 자바 같은 객체지향(Object-Oriented Programming, OOP) 언어에서는 다중상속이 되지 않습니다. 'C++'에서는 다중상속은 권장하지 않습니다. 부모가 여럿이면 어느 유전자가 어디서 왔는지 추적하기가 힘들기 때문입니다. 만약 다중 상속을 하려고 하면 다음과 같은 메시지가 나옵니다. 'WpfApplication1.MainWindow' 클래스는 여러 개의 기본 클래스('System.Windows.Window' 및 'baseTest')를 가질 수 없습니다. 개족보 만들지 말라는 오류입니다 ㅡ,.ㅡ; 1. 필요성 그런데 프로그램을 만들다 보면 베이스를 여러 개 만들어야 할 경우가 생깁니다. 대표적인 경우가 툴에서 생성해주는 컨트롤에 베이스를 붙일 때입니다. 둘다 이미 'Window'..
1. 문제를 만나다 일관성 없는 엑세스 가능성: '[대상]' 필드 형식이 '[다른 대상]' 필드보다 액세스하기 어렵습니다. 참고 : MSDN - 컴파일러 오류 CS0052 이 오류는 걸리면 난감합니다 ㅡ.-;;; 에러 위치가 애매하기 때문입니다 ㅎㅎㅎ 2. 원인 정말 초보적인 실수지만 자주 하는 실수로 상속에서 접근자를 잘못 써서 그렇습니다. 자식에서 사용하는 접근자는 부모와 같거나 더 접근하기 힘든 접근자를 사용해야 합니다. 3. 해결 방법 예를 들면 '퍼블릭(public)'이 아닌 클래스나 요소를 퍼블릭으로 선언하면 발생합니다. 부모는 프라이빗(private)인데 자식이 그보다 더 접근하기 쉬운 퍼블릭으로 선언했기 때문입니다. 이 경우 'claTest1'을 'public'로 선언하던지 생성할 때 퍼블..
.NET에서 XML을 사용하기는 엄청 쉽습니다. 문제는 실버라이트는 다른 방식을 사용합니다....;;;; 연관글 영역 1. 테스트 데이터 테스트 데이터는 아래와 같습니다. 1-0 2-0 3-0 1-1 3-1 1-2 2-2 3-2 2. 사용하기 'System.Xml' 만 유징 해주시면 됩니다. 사실 'XmlDocument'로 로드만 된다면 그다음부터는 노드(Node) 순서대로 검색만 하면 됩니다. //도큐 생성 XmlDocument xDoc = new XmlDocument(); xDoc.LoadXml(txtXml.Text); //루트가저오기 XmlNode xNode = xDoc.SelectSingleNode("tests"); //검색할 요소 리스트 XmlNodeList xNodeList = xNode.Se..