dll에 사용 된 모든 구조체 선언 된 변수를 필터링 할 수 있습니까?dll에 사용되는 구조체 가져 오기
foreach (FieldInfo targetfield in InputType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static))
{
}
등 할 수있는 모든 가능한 방법이 있나요 :
정적 필드의 경우 다음 코드를 사용하고 있습니다?
dll에 사용 된 모든 구조체 선언 된 변수를 필터링 할 수 있습니까?dll에 사용되는 구조체 가져 오기
foreach (FieldInfo targetfield in InputType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static))
{
}
등 할 수있는 모든 가능한 방법이 있나요 :
정적 필드의 경우 다음 코드를 사용하고 있습니다?
멤버 변수를 필드 또는 로컬 변수라고 일컫습니까? http://mono-project.com/Cecil
당신은 아마 전용 유형 원하는 :
Int32
, 값 유형이지만 다시 "구조체"라고 생각하는 것이 아닙니다) IsPrimitive 속성을 참조하십시오. 이 같은뭔가 : 예기치 않은 수 있습니다
const BindingFlags bindingFlags =
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static;
var structFields = from field in InputType.GetFields(bindingFlags)
let type = field.FieldType
where type.IsValueType
&& !type.IsEnum
&& !type.IsPrimitive
select field;
foreach (var targetField in structFields) { ... }
한 가지 :이 포함됩니다 내장-하지만, 비 - 원시 값 유형 DateTime 및 TimeSpan처럼 ... 그들이 이기 때문에 구조체. 당신이하려는 일에 따라 그것이 괜찮은지 아닌지를 결정해야합니다. (내 경우, 나는 그들을 싶지 않았다.) 당신이 당신의 결과에 이들은, 가능성의 몇 수 있습니다 원하지 않는 결정하는 경우 :
type != typeof(DateTime)
을)를 필터링합니다.type.Assembly != typeof(object).Assembly
)에서 모든 것을 필터링합니다.
여기서 중요한 것은 모든 유형의 모든 구성원과 구조체 인 함수의 모든 변수를 찾는 것입니다. 구조체에 선언 된 모든 형식이 아닙니다. –
사실, 너무 빨리 읽었습니다. – Hylaean