C #의 부분 인터페이스
C #은 부분 인터페이스를 허용합니까? 즉, ManagerFactory1.cs 클래스에서
public partial interface IManagerFactory
{
// Get Methods
ITescoManager GetTescoManager();
ITescoManager GetTescoManager(INHibernateSession session);
}
ManagerFactory.cs 클래스에는 다음이 있습니다.
public partial interface IManagerFactory
{
// Get Methods
IEmployeeManager GetEmployeeManager();
IEmployeeManager GetEmployeeManager(INHibernateSession session);
IProductManager GetProductManager();
IProductManager GetProductManager(INHibernateSession session);
IStoreManager GetStoreManager();
IStoreManager GetStoreManager(INHibernateSession session);
}
ManagerFactory 및 ManagerFactory1은 모두 동일한 어셈블리에 있습니다.
가장 간단한 방법은 시도하는 것입니다. :)
그러나 예, 부분 인터페이스가 허용됩니다.
partial
수정 자의 유효한 위치 (C # 3.0 사양 참조 포함) :
- 클래스 (10.1.2)
- 구조체 (11.1.2)
- 인터페이스 (13.1.2)
- 메서드 (C # 3.0 +) (10.2.7; 10.6.8)
스펙의 섹션 10.2에는 부분 유형에 대한 대부분의 일반 세부 사항이 포함되어 있습니다.
잘못된 위치 :
- 열거 형
- 대표자
하지만 중요한 질문은 왜일까요?
자동 생성 코드를 확장 할 수 있도록 부분 클래스가 있습니다. VS는 양식 파일, 코드 숨김 또는 Linq to SQL 접근자를 생성 할 수 있으며 부분을 사용하여 확장 할 수 있습니다.
일반적으로 가치가있는 것보다 더 많은 혼란을 야기하는 클래스 (또는이 경우 인터페이스)를 분할하기 위해 부분을 사용하는 것을 피할 것입니다.
이 경우에는 이것이 여러 파일에 걸쳐 있어야하는 이유를 조사 할 것입니다. 팩토리 패턴 인터페이스는 코드를 통해 추적을 더 복잡하게 만들 수 있지만 여기서는 여러 파일을 통해 추적하게됩니다.
네, 그렇습니다.
MSDN의 부분 클래스 및 메서드 (C # 프로그래밍 가이드)
제한 사항 :
- 동일한 유형의 일부인 모든 부분 유형 인터페이스 정의는 다음을 사용하여 수정해야합니다.
partial
- 부분 수정자는 키워드 바로 앞에만 나타날 수 있습니다
interface
. - 동일한 유형의 일부를 의미하는 모든 부분 유형 정의는 동일한 어셈블리와 동일한 모듈 (.exe 또는 .dll 파일)에 정의되어야합니다.
부분 인터페이스는 코드 생성이 관련 될 때 기본적으로 사용됩니다. 예를 들어 인터페이스의 한 부분이 생성되고 다른 부분은 사용자가 작성한 경우입니다.
예, 그렇습니다 .
인터페이스를 부분적으로 만들기 전에 두 번 생각하십시오. 두 개의 itnerface로 분할하는 것이 더 낫습니까?
인터페이스를 작고 집중적으로 유지하십시오. 부분은 코드 냄새입니다.
좋은.
나는 이것이 냄새가 될 수 있다는 데 동의하지만 여전히 그것을 할 한 가지 이유를 생각할 수 있습니다.
현재 WPF 및 Silverlight 용 응용 프로그램 MVVM 프레임 워크를 작업 중입니다. 내가 만난 것은 WPF와 Silverlight가 너무 다르기 때문에 코드 전체에서 정의를 사용하는 것보다 부분 인터페이스 / 클래스가 실제로 두 프레임 워크 간의 차이점을 분리하고 코드를 깔끔하고 거의 단일 소스로 유지할 수 있다는 것입니다.
See the docs which state that it can be used on classes, structs or interfaces
Short and simple: YES!
Yes, it does. Are both partial interfaces defined in the same namespace?
ReferenceURL : https://stackoverflow.com/questions/734112/partial-interface-in-c-sharp
'IT story' 카테고리의 다른 글
원형 차트의 색상을 선택하는 방법은 무엇입니까? (0) | 2021.01.06 |
---|---|
C #에서 믹스 인을 구현할 수 있습니까? (0) | 2021.01.06 |
UIView의 clipsToBounds와 CALayer의 masksToBounds 사이의 관계는 어떻습니까? (0) | 2021.01.06 |
MySQLnd가 활성 드라이버인지 확인하는 방법은 무엇입니까? (0) | 2021.01.06 |
C #에서 내 자신의 예외를 어떻게 정의합니까? (0) | 2021.01.06 |