2011-01-15 4 views
0

인 문자열 이름에서 동적으로 캐스팅합니다. 그래서 코더가 특정 기본 클래스에서 파생 된 클래스를 가진 DLL을 만들 수있는 게임 제작자 편집기를 만들고 있습니다 (동작을 가정 해 봅시다). 그들은 자신의 DLL을 플러그인 폴더에 넣고 주요 게임 제작자 인 exe는이 모든 DLL을로드합니다.캐스팅 유형이

해당 클래스는 게임 개체에 인스턴스를 할당 할 때 속성의 초기 값을 설정할 수있는 속성을 가질 수 있습니다. 이 작업은 모두 그리드에서 수행되고 리플렉션을 사용하여 클래스의 속성을 검사합니다.

물론 이것은 게임 제작자 프로젝트를 다시 열거 나 게임을 실행하려고 할 때 다시로드해야 할 시점에 파일에 저장해야합니다. 이상적으로 기본 exe는이 데이터를 읽고 저장된 값을 올바른 속성 유형으로 캐스팅 할 수 있습니다.

또한이 DLL의 프로그래머에게 각 유형에 동적을 사용하도록 요청하고 싶지는 않습니다. 그래서 이것이 가능한가?

답변

0

데이터를 serialize/deserialize 할 때 json, xml, binary 등의 데이터를 추가하고 어딘가에 유지하는 이유는 무엇입니까?

+0

이것은 DLL의 프로그래머가 자신의 형식에 맞게 처리해야합니까? 난 그냥 주 exe 그것을 모두 처리하는 데 그들을 쉽게하기 위해 노력했다. 기본적으로 알 필요가있는 모든 공개 속성은 사용자가 수정 한 값을 가질 수 있으며 아무 것도하지 않고도 디스크에 저장되거나 저장됩니다. 이상적으로. – user441521

+0

속성에 대한 작업을 수행 할 수있었습니다 : string propName = "WalkSpeed"; string propValue = "5.5"; Type t = typeof(Controller); Behavior b = (Behavior)Activator.CreateInstance(t); PropertyInfo prop = t.GetProperty(propName); string type = prop.PropertyType.ToString(); prop.SetValue(b, Convert.ChangeType(propValue, Type.GetType(type)), null); user441521