함수정의 부분 질문입니다.

아래와 같은 함수가 있습니다.
첫번째 이 소스에는 일반적인 파라미터는 거의 없네요 ㅠㅠ
IReceiveFilterFactory 의 경우 IReceiveFilterFactory의 클래스(혹은 인터페이스)를
컬렉션과 같이 ArrayList 등으로 구성하고 처리한 것일 거 같은데요 그 컬렉션 구성원들의 타입이 TRequestInfo 형식(타입)으로 되어 있다는 의미인지요?

두번째 IEnuerable 은 알겠는데 IEnuerable 은 IEnerator 구현해야 하잖아요 (Docs에 그렇게 되있던거 같습니다.) 그런데 위처럼 클래스에서 구현할 수가 없을꺼 같은데 저렇게 사용하는게 가능한것인가요?

private bool SetupMedium(
   IReceiveFilterFactory<TRequestInfo> receiveFilterFactory,
   IEnumerable<IConnectionFilter> connectionFilters,
   IEnumerable<ICommandLoader<ICommand<TAppSession, TRequestInfo>>> commandLoaders
)
1개의 좋아요
  1. 네.
  2. 네. IConnectionFilter를 구현한 클래스를 구성요소로 쓰면서, IEnumerable를 구현한 제네릭 클래스를 사용하면 됩니다.
2개의 좋아요
  • I로 시작하는 것은 인터페이스라고 보시면 됩니다. 예) IReceiveFilterFactory<>, IConnectionFilter, ICommand<,>
  • T로 시작하는 것은 제네릭 유형 입니다. 예) TAppSession, TRequestInfo
  • 이름의 마지막에 의미가 있습니다.
    • Factory: 인스턴스 생성기. 예) IReceiveFilterFactory는 IReceiveFilter<>를 생성하는 생성기 입니다.
    • Filter: 필터 입니다. 필터는 조건에 부합하는 것은 수용하고 부합하지 않는 것은 수용하지 않는 역할 입니다. 예) IConnectionFilter로 유추해보면 연결의 어떤 값을 허용하거나 허용하지 않는 조건이 있을 듯 하네요.
    • Loader: 이것도 일종의 생성기입니다만 인스턴스 생성기보다 뭔가를 더 세팅한다는 의미로 이해하면 좋을 것 같습니다. 예) ICommand<,> 명령어를 세팅한다.
  • IEnumerable<>는 순차적인 목록을 의미합니다. 예) List<>, Array<> 등 IEnumerable<>이 구현된 모든 목록

이렇게 인터페이스로 인자를 받아 조합하는 방식은 일종의 디자인 패턴입니다. 이런 인터페이스를 구현한 인스턴스를 막 만드는게 아니라 라이브러리에서 생성패턴으로 만들 수 있게 되어있을 것이고, 관련된 샘플도 찾아보실 수 있을꺼에요.

  • 인터페이스 및 인터페이스 구현
  • 인터페이스로 구현된 .NET 클래스
  • 디자인 패턴

위의 내용을 별도로 학습을 하시면 좀 더 빠르게 문제 해결이 되지 않을까 생각합니다.

3개의 좋아요

그리고… 소스코드는

```csharp
코드
```

로 표현하셔야 가독성이 좋아집니다. 읽기좋게 질문을 올리셔야 답변이 달릴 확률이 높아져요.

3개의 좋아요