{"id":26371457,"url":"https://github.com/jamesnetgroup/reflector","last_synced_at":"2025-03-17T00:39:11.513Z","repository":{"id":167356508,"uuid":"642892959","full_name":"JamesnetGroup/reflector","owner":"JamesnetGroup","description":null,"archived":false,"fork":false,"pushed_at":"2024-08-03T06:51:44.000Z","size":109,"stargazers_count":8,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-09T20:34:05.555Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JamesnetGroup.png","metadata":{"files":{"readme":"README.ko.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-19T15:27:30.000Z","updated_at":"2024-12-07T18:20:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"54dda94e-d91e-4bf8-9aa1-6621734cfef6","html_url":"https://github.com/JamesnetGroup/reflector","commit_stats":null,"previous_names":["jamesnet214/reflector","jamesnetgroup/reflector"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesnetGroup%2Freflector","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesnetGroup%2Freflector/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesnetGroup%2Freflector/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JamesnetGroup%2Freflector/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JamesnetGroup","download_url":"https://codeload.github.com/JamesnetGroup/reflector/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243955737,"owners_count":20374372,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-17T00:39:11.052Z","updated_at":"2025-03-17T00:39:11.500Z","avatar_url":"https://github.com/JamesnetGroup.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Reflector [![English](https://img.shields.io/badge/Language-English-blue.svg)](README.md) [![한국어](https://img.shields.io/badge/Language-한국어-red.svg)](README.ko.md)\n\nWPF와 .NET의 고급 기술을 실험하고 적용하는 실용적인 학습 프로젝트\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![.NET](https://img.shields.io/badge/.NET-8.0-blue.svg)](https://dotnet.microsoft.com/download)\n[![Stars](https://img.shields.io/github/stars/jamesnet214/reflector.svg)](https://github.com/jamesnet214/reflector/stargazers)\n[![Issues](https://img.shields.io/github/issues/jamesnet214/reflector.svg)](https://github.com/jamesnet214/reflector/issues)\n\n## 프로젝트 개요\n\nReflector는 WPF 개발자들이 고급 기술을 실험하고 적용할 수 있는 실습 중심의 프로젝트입니다. 이 프로젝트를 통해 복잡한 WPF 애플리케이션 구조, 동적 어셈블리 분석, 그리고 고급 컨트롤 템플릿 설계 등을 직접 구현하고 심도 있게 학습할 수 있습니다.\n\n\u003cimg src=\"https://github.com/user-attachments/assets/6f8ae2c5-dfdd-4118-b228-ebae32df6005\" width=\"49%\"/\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/1088c829-a33c-41c1-b912-6ce034779237\" width=\"49%\"/\u003e\n\n## 핵심 기술 및 구현 사항\n\n#### 1. 프로젝트 구조화 및 모듈화\n- [x] 의존성 주입을 활용한 느슨한 결합 구현\n- [x] 프로젝트 분산화를 통한 유지보수성 향상\n- [x] Prism 라이브러리를 활용한 모듈 기반 아키텍처 구현\n\n#### 3. 리플렉션과 동적 어셈블리 분석\n- [x] System.Reflection 네임스페이스를 활용한 런타임 타입 정보 접근\n- [x] 동적 DLL 로딩 및 분석 기법 적용\n- [x] 메타데이터를 활용한 클래스, 인터페이스, 메서드, 속성 등의 구조 파악\n\n#### 4. 고급 WPF 컨트롤 및 템플릿 설계\n- [x] CustomControl을 활용한 TreeView, ListBox 확장 구현\n- [x] 복잡한 계층 구조를 위한 재귀적 ItemsPresenter 포함 ControlTemplate 설계\n- [x] DataTemplate와 ControlTemplate의 고급 활용 기법\n\n#### 5. MVVM 아키텍처 심화\n- [x] 완전한 MVVM 패턴 구현 및 데이터 바인딩 최적화\n- [x] Command 패턴과 INotifyPropertyChanged 인터페이스의 효과적 활용\n- [x] ViewModel 간 통신을 위한 이벤트 어그리게이터 패턴 적용\n\n#### 6. 성능 최적화 기법\n- [x] 가상화(Virtualization) 기술을 활용한 대량 데이터 처리\n- [x] 멀티스레딩을 통한 UI 응답성 향상\n- [x] 메모리 누수 방지를 위한 약한 참조(Weak References) 활용\n\n## 기술 스택\n\n- .NET 8.0\n- WPF (Windows Presentation Foundation)\n- MVVM (Model-View-ViewModel) 패턴\n- Prism Library\n- Jamesnet.Wpf NuGet 패키지\n\n## 시작하기\n\n### 필요 조건\n\n- Visual Studio 2022 이상\n- .NET 8.0 SDK\n\n### 설치 및 실행\n\n#### 1. 리포지토리 클론:\n```\ngit clone https://github.com/jamesnet214/reflector.git\n```\n#### 2. 솔루션 열기\n- [x] Visual Studio\n- [x] Visual Studio Code\n- [x] Jetbrains Rider\n\n\u003cimg src=\"https://github.com/user-attachments/assets/af70f422-7057-4e77-a54d-042ee8358d2a\" width=\"32%\"/\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/e4feaa10-a107-4b58-8d13-1d8be620ec62\" width=\"32%\"/\u003e\n\u003cimg src=\"https://github.com/user-attachments/assets/5ff487f6-55e4-43e1-9abf-f8d419ee6943\" width=\"32%\"/\u003e\n\n\n\n#### 3. 빌드 및 실행\n- [x] Windows 11 권장\n\n## 사용 방법\n\n1. 애플리케이션 실행\n2. DLL 파일 선택 및 로드\n3. 트리 뷰에서 원하는 항목 탐색\n4. 선택된 항목의 상세 정보를 오른쪽 패널에서 확인\n\n## 기여하기\n\n프로젝트 개선에 기여하고 싶으시다면 Pull Request를 보내주세요. 모든 형태의 기여를 환영합니다!\n\n## 라이선스\n\n이 프로젝트는 MIT 라이선스 하에 배포됩니다. 자세한 내용은 [LICENSE](https://github.com/jamesnet214/reflector/blob/main/LICENSE) 파일을 참조하세요.\n\n## 연락처\n\n- 웹사이트: https://jamesnet.dev\n- 이메일: james@jamesnet.dev, vickyqu115@hotmail.com\n\nReflector를 통해 WPF 개발의 고급 기술을 탐색하고 실제 프로젝트에 적용해보세요!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesnetgroup%2Freflector","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamesnetgroup%2Freflector","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesnetgroup%2Freflector/lists"}