지금 이렇게 쓰고 있는데,
작동은 잘 되지만 보다시피 As List 로 형변환 하는 부분이 걸림.
그래서 형변환 하지 않도록 인터페이스로 묶어주려고 하니
안된다고 그럼. man, weapon 이 iIdHas 인데 왜 저럴까?
지금 이렇게 쓰고 있는데,
작동은 잘 되지만 보다시피 As List 로 형변환 하는 부분이 걸림.
그래서 형변환 하지 않도록 인터페이스로 묶어주려고 하니
안된다고 그럼. man, weapon 이 iIdHas 인데 왜 저럴까?
해당 댓글은 삭제되었습니다.
그럼 대안은?
그냥 제네릭 할당 안 됨. 대신 제네릭 메소드를 통해서는 됨. 왜냐면 아무리 상속 가능한 제네릭 타입이라도 Dictionary던 List 던 애초에 제네릭 한정자가 없기 때문에 모호해짐. 하지만 제네릭 메소드를 만들어 쓰면 제네릭 한정자를 지정할 수 있어서 가능해짐. TypeDicMapper.add(타입, 리스트) 넣는 부분을 메소드로 빼면 가능할거다.
핵심은 '타입' 이랑 '인덱스' 만 으로 container 에서 원하는 객체를 꺼내오는 것인데, 박싱도 없어야 함. 찾을때 무슨 리스트에서 찾을지를 타입으로 찾아보자는 게 아이디어였는데 아직은 박싱 없이는 안되네. 일단은 걍 Weapon found = Container.WeaponList[id] 로 하드코딩 해두고, 나중에 갈아치워야겠음. 제네릭 어렵드앙
아니면 속 시원하게 두번째 제네릭 타입을 dynamic으로 하던가 ㅋㅋ
제네릭 메소드로 빼내보았으나 여전히 안되더라.
이유: IList가 공변성을 가지지 않아서 List(Man)이 IList(IIdHas)를 구현하지않음
그리고 IEnumerable T 안 쓴 건 당연히 인덱스 접근을 원해서임.