2016-08-30 3 views
-3

편집해야 할 필드와 동일한 두 개의 목록 <이 있습니다. 이 목록에 대해 공통 기능을 작성하는 방법은 무엇입니까?두 개의 일반 함수 목록 <>

public List<?> CutField(List<?> list) 
{ 
    foreach(var element in list) 
    { 
     element.Field = // ; 
    } 
    return List<?>; 
} 
+1

이 두 유형은 속성을 지정하여 동일한 인터페이스를 구현합니까? (어쨌든 필드를 공개적으로 노출하고 싶지는 않습니다 ...) 또한 목록 요소가 참조하는 객체를 수정하는 경우 목록을 반환하는 이유는 무엇입니까? –

+6

두 가지 유형이 동일한 인터페이스를 구현하고 목록을 'List '으로 선언하도록하십시오. –

+3

@TimSchmelter : 또는 형식 매개 변수에 형식 제약 조건이있는 일반 메서드가 있습니다. –

답변

0

가장 좋은 방법은 제네릭을 사용하는 것입니다 :

public List<T> CutField<T>(List<T> list) where T : MyInterface 
{ 
    foreach(T element in list) 
    { 
     element.Field = // ; 
    } 

    return list; 
} 

가능한 모든 유형 목록에서 물론

public interface MyInterface 
{ 
    object Field { get; set; } // or whatever datatype you need for the field 
} 

으로 해당 인터페이스를 구현해야합니다.

매개 변수로 전달 된 목록을 이미 수정하고 있으므로 반환 유형을 CutField에서 생략 할 수도 있습니다.

+0

안녕하세요. 나는 그것을 썼다. 그러나 T는 적색이고 VS는 나에게 글을 쓴다. cfnnjt는 기호 T를 해결하고 빨간색은 어디 있는가? : 비 제네릭 선언에는 제약이 허용되지 않는다. – jack

+0

Ooops, 나는 내 대답을 업데이트했다. – HimBromBeere

+0

예, 이제 작동 중입니다! 하지만 이제는이 일반 목록에서 두 목록을 전달할 수 있습니까? – jack