내 프로젝트에는 구조가 다른 다양한 비즈니스 개체의 병합을 관리하는 클래스에서 구현되는 다음과 같은 세 가지 인터페이스가 있습니다.다양한 수의 일반 매개 변수를 사용할 수 있습니까?
public interface IMerger<TSource, TDestination>
{
TDestination Merge(TSource source, TDestination destination);
}
public interface ITwoWayMerger<TSource1, TSource2, TDestination>
{
TDestination Merge(TSource1 source1, TSource2 source2, TDestination destination);
}
public interface IThreeWayMerger<TSource1, TSource2, TSource3, TDestination>
{
TDestination Merge(TSource1 source1, TSource2 source2, TSource3 source3, TDestination destination);
}
이 잘 작동하지만 오히려 (예를 아래 params
사용하며, 나는이 유효한 C 번호 아니라는 것을 알고) TSource
수의 매개 변수를 지정 하나 IMerger
인터페이스, 이런 식으로 뭔가를 할 것이다 :
public interface IMerger<params TSources, TDestination>
{
TDestination Merge(params TSource sources, TDestination destination);
}
이것을 달성 할 수있는 방법이 있습니까? 아니면 기능적으로 동일한 것입니까?
다른 어셈블리에서, 그러나 당신은을 제공 할 수 있습니다 : 당신이 테스트를하려고하면 ('Func' 델리게이트와 마찬가지로) –
이것은 잘못된 의사 코드 일 뿐이지 만,'public interface IMerger { TDestination Merge (TDestination 대상, 매개 변수 TSource 소스); }'. 'params'가 마지막에 올 것입니다. 그러나 크리스챤 헤이 터 (Christian Hayter)에 따르면 기본 클래스를 갖는 것이 유일한 해결 방법입니다. –
nawfal