DLL을로드하려고하고 각 유형에 대해 속성 이름과 값을 표시하려고합니다. "Object does not match target type"메시지와 함께 System.Reflection.TargetException을 던지는 다음 코드를 가지고 있습니다.리플렉션은 DLL의 모든 유형에서 값을 가져옵니다.
var DLL = Assembly.LoadFrom(PathToDLL);
foreach (Type type in DLL.GetTypes())
{
foreach (PropertyInfo property in type.GetProperties())
{
lstProperties.Items.Add(string.Format("{0} - {1}", property.Name, property.GetValue(DLL, null)));
}
}
GetValue() 호출과 함께 유형, DLL 및 null을 사용해 보았습니다. 무엇이 잘못 되었나요?
나에 대해 테스트하고있어 DLL은 하나 개의 속성이 있습니다
public string TheValue{ get; set; }
덕분에 모든.
인스턴스 속성 값을 가져 오려면 해당 유형의 인스턴스가 필요합니다. –
** class ** 속성의 값을 표시 할 수 없으며 값이 없습니다. ** 객체 ** 속성의 값만 표시 할 수 있습니다. 이것은 클래스와 객체의 차이가 중요한 부분입니다. – MikeSW
물론, 인스턴스화 할 수없는 유형의 어셈블리가있을 수 있습니다 (추상 클래스가 떠오른다). 그리고 당신이 할 수있는 모든 타입을 인스턴스화하기 전에 두 번 생각해야합니다. 그것은 기본적으로 당신이 제어하지 않는 임의의 코드를 실행하는 것입니다 (그리고 다시 임의의 어셈블리를로드하는 것입니다). –