나는이 부모 클래스 "구성 요소", 그리고 "컴포넌트 1", "컴포넌트 2"에서 상속 일부 클래스 등등 내가 목록 List<Component> Components
이특정 유형의 새 인스턴스를 만들 동적으로
을하고 난 작성해야 그것에서 상속 목록에 추가 일부 클래스의 새로운 인스턴스 Components
내가 지금 뭐하는 거지 방법은 내 코드가 커질수록, 나는 더 많은 구성 요소를 추가 할 필요가
private void AddComponent(string componentType)
{
if (componentType == "component1")
{
Components.Add(new component1());
}
if (componentType == "component2")
{
Components.Add(new component2());
}
// and so on
}
같은 것입니다 . 그래서 나는 사물에 대해 갈 수있는 더 좋은 방법이 있는지 궁금합니다.
나는 주위를 둘러 보았다 나를 위해 작동하지 않았다 이러한 방법으로 발견var newComponent = Activator.CreateInstance(Type.GetType(componentType));
newComponent = Convert.ChangeType(newComponent, Type.GetType(componentType));
Components.Add(newComponent);
는 말한다 : cannot convert from 'object' to Component
편집 : 해결, 나는 캐스팅을 깜빡입니다. 파생 클래스가 빈 생성자가 있고 구성 요소 유형을 사용하는 대신 직접 캐릭터 라인 표현을 통과 괜찮 경우
Activator.CreateInstance는 object를 반환합니다. Components.Add()는 Component를 허용합니다. 어떤 시점에서 캐스트해야합니다. 예. Components.Add ((Component) newComponent); – moreON
@moreON 어리석은 나를 추측한다. 감사. –