그렇습니다. 리플렉션은 갈 길입니다. 먼저 Type
목록에서 인스턴스의 유형 (런타임)을 나타내는를 얻습니다 . GetType
on 메소드를Object
호출하여이를 수행 할 수 있습니다 . Object
클래스 에 있기 때문에 모든 유형에서 파생되므로 .NET의 모든 객체에서 호출 할 수 있습니다 Object
( 기술적으로는 모든 것이 아니지만 중요하지는 않습니다).
당신은 일단 Type
인스턴스를, 당신은 호출 할 수있는 GetProperties
방법을 얻가에 PropertyInfo
온 속성에 대한 런타임 informationa을 나타내는 인스턴스 Type
.
오버로드를 사용하여 검색 할 속성을 GetProperties
분류 할 수 있습니다 .
거기에서 정보를 파일로 작성하면됩니다.
위의 코드는 다음과 같습니다.
// The instance, it can be of any type.
object o = <some object>;
// Get the type.
Type type = o.GetType();
// Get all public instance properties.
// Use the override if you want to classify
// which properties to return.
foreach (PropertyInfo info in type.GetProperties())
{
// Do something with the property info.
DoSomething(info);
}
메소드 정보 또는 필드 정보를 원하는 경우 GetMethods
또는 GetFields
메소드 의 과부하 중 하나를 각각 호출해야합니다 .
또한 멤버를 파일에 나열하는 것이 중요하지만 이 정보를 사용하여 속성 세트를 기반으로 논리를 구동 해서는 안됩니다 .
유형의 구현을 제어한다고 가정하면 공통 기본 클래스에서 파생되거나 공통 인터페이스를 구현하고 해당 인터페이스를 호출해야합니다 ( as
또는 is
연산자를 사용하여 작업중인 기본 클래스 / 인터페이스를 판별 할 수 있음) 실행 시간).
그러나 이러한 유형 정의를 제어하지 않고 패턴 일치를 기반으로 논리를 구동해야한다면 괜찮습니다.