제네릭 클래스의 메서드를 호출해야하는 곳에서 응용 프로그램을 개발하고 있으며 인스턴스의 실제 형식에 대해서는 신경 쓰지 않습니다. 다음 Java 코드 비슷해 : 나는 서둘러에 있던 때C# generics의 Java 와일드 카드에 해당하는 것은 무엇입니까
public class Item<T>{
private T item;
public doSomething(){...}
}
...
public void processItems(Item<?>[] items){
for(Item<?> item : items)
item.doSomething();
}
은, 그래서 내가 호출하는 데 필요한 방법과 인터페이스를 정의하여 내 문제를 해결하고 일반 클래스를 구현했다.
public interface IItem
{
void doSomething();
}
public class Item<T> : IItem {
private T item;
public void doSomething(){...}
}
...
public void processItems(IItem[] items)
{
foreach(IItem item in items)
item.doSomething();
}
이 해결 방법은 제대로 작동하지만 동일한 동작을 얻으려면 올바른 방법을 알고 싶습니다.
편집 :
내가 processItems
의 호출자가 실제 유형을 모르는 것을 참조하는 것을 잊었다. 사실 생각은 배열이 processItems
에 인수로 전달되면 혼합 된 유형을 포함 할 수 있다는 것입니다. 닷넷에 이러한 배열을 가질 수 없기 때문에 비 제너릭 기본 클래스 나 인터페이스를 사용하는 것이 유일한 방법 인 것 같습니다.
블러 흐, 너무 빨리 몇 초. : P –
그래, 나를 때려. 하지만 발신자의 예를 사용하여 편집 할 수 있습니까? –
그냥'ProcessItems (data); ' –