2009-10-20 5 views

답변

9

인터페이스를 사용하면 클래스를 분리하여 나중에 테스트 할 수 있습니다. 나중에 테스트 할 필요가 없거나 동일한 인터페이스에서 상속받은 다른 클래스를 전달할 가능성이없는 경우 클래스 메서드를 사용하는 것이 정상입니다. 특히 System.Collections.Generic.List와 같은 기본 클래스의 경우 먼저 LINQ 쿼리를 수행 할 때마다 IEnumerable로 캐스팅하지 않으려합니다.

3

나는이 모든 것이 당신이 행동하는 대상에 대해 무엇을 알고 있는지에 달려 있다고 생각합니다. 내가 바즈 myBaz 가지고있는 경우에

public class Bar : ICommon 
public class Baz : ICommon 

가정, 다음에 작용하기 전에 ICommon에 캐스팅 할 필요가 없습니다.

가능한 가장 높은 추상화 수준에서 작업하십시오. 리팩토링이 쉬워지며 코드 재사용이 크게 향상됩니다. 즉

Bar myBar = new Bar(); 
Baz myBaz = new Baz(); 

doSomething(myBar); 
doSomething(myBaz); 

public void doSomething(ICommon parameter) 
{ 
    parameter.DoICommonThing(); // working on object reference of type ICommon. 
} 

, 발신자가 (실제 전달 된 매개 변수)가 어떤 줄 수 있도록, 가장 일반적인 유형 (메소드 서명에서 즉, 프로토 타입 매개 변수)을 부탁드립니다.

관련 문제