Google 소프트웨어의 API 호출을 포함하는 DLL의 세 가지 버전을 만들어야합니다. 나는 지금까지 상속을 사용하여 그것을하는 다음과 같은 방법을 알아 냈다. 누군가 내가 올바른 방법으로 상속을 사용하고 있는지 확인하십시오 (또는 적절한/더 나은 방법을 제안 했습니까?) 저는 C# 프로젝트 프로그래밍을 배우는 것에 익숙합니다. 그런 다음소프트웨어의 다른 버전에 맞는 C# DLL을 빌드하는 최선의 방법은 무엇입니까?
namespace APIcalls
{
public partial class API_Calls
{
public void Common_function1()
{
}
public void Common_function2()
{
}
}
}
은 내가 그들 각각에 다음과 같은 세 가지 .cs 클래스 파일이 (Edition_A을 다음과 같이
지금까지 내가 (모든 DLL 버전에 대한 공통) API_calls의 주요 클래스가
각 어셈블리 빌드에서namespace dll_edition
{
public class Edition_A
{
public Edition_A()
{
// Code here for checking if current DLL is authorized
// Otherwise throw an exception
}
}
}
namespace APIcalls
{
public partial class API_Calls : Edition_A
{
public void Additional_Edition_A_function1()
{
}
public void Additional_Edition_A_function2()
{
}
}
}
내가 Edition_A 파일을 포함, 또는 : Edition_B 및 Edition_C)는 DLL의 각 버전에 대한 다른 요인 다음과 같이 추가 호출은 부분 클래스 API_Calls에 포함되어 있습니다 Edition_B 파일 또는 Edition_C 파일을 만든 다음 세 개의 DLL을 제공하는 세 가지 어셈블리를 모두 빌드합니다.
내 질문 : 적절한 방법입니까? 내가 그 일을 어떻게했는지에 대해 부정적인 점이 있습니까? 아니면 이것을하는 더 좋은 방법이 있습니까? 내 궁극적 인 목표는 몇 가지 공통된 API 호출이 포함 된 세 가지 DLL 버전과 각 DLL 유형에 대한 다양한 API 호출을 사용하는 것입니다.
입력 해 주셔서 감사합니다. 내가 이해, 당신은 다른 다른 클래스에서 사용되는 공통 기본 클래스에 일반적인 기능의 설정에서
-DD
왜 모든 DLL이 하나의 dll에 있고, 실행중인 에디션을 기반으로 특정 API 호출에만 액세스 할 수있는 것은 아닙니다. 하나의 코드베이스 만 유지하게됩니다. – Dispersia
DLL의 크기를 줄이려고했는데 (그렇지 않은 경우 거의 12MB였습니다.) 400 개가 넘는 API 호출이한데 모여서 더 좋은 방법이 있는지 확실하지 않았습니다. 더 나은 방법이 있습니까? 동일한 솔루션 내에 모든 파일이 있습니다. 단지 하나의 코드 기반 만 유지하는 것이 아닙니까? – EmbeddedDude
깨끗한 코드와 관련하여 FCoI라는 규칙이 있습니다. 상속보다 컴포지션을 선호합니다. 아마도 당신은이 시나리오에서 그것을 이해하고 사용하려고 시도 할 수 있습니다. 상속은 강력한 커플 링을 생성하므로 나중에이를 변경하기가 어렵습니다. 대신 구성을 사용하면 다양한 방법으로 내용을 구성 할 수 있습니다. 느슨한 커플 링을 사용하여 물건을 교환 할 수 있습니다. 나중에 라이선스를 변경하기로 결정한 경우 –