diff options
author | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 13:02:25 -0700 |
---|---|---|
committer | Jason Smith <jason.smith@xamarin.com> | 2016-03-22 16:13:41 -0700 |
commit | 17fdde66d94155fc62a034fa6658995bef6fd6e5 (patch) | |
tree | b5e5073a2a7b15cdbe826faa5c763e270a505729 /Xamarin.Forms.Loader/FormsType.cs | |
download | xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.gz xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.tar.bz2 xamarin-forms-17fdde66d94155fc62a034fa6658995bef6fd6e5.zip |
Initial import
Diffstat (limited to 'Xamarin.Forms.Loader/FormsType.cs')
-rw-r--r-- | Xamarin.Forms.Loader/FormsType.cs | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Xamarin.Forms.Loader/FormsType.cs b/Xamarin.Forms.Loader/FormsType.cs new file mode 100644 index 00000000..44b4af7a --- /dev/null +++ b/Xamarin.Forms.Loader/FormsType.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +namespace Xamarin.Forms.Loader +{ + internal sealed class FormsType : ILoaderElement + { + readonly IEnumerable<FormsMember> formsMembers; + + internal FormsType(FormsLoader formsLoader, Type type) + { + FormsLoader = formsLoader; + Type = type; + + const BindingFlags bindingFlags = BindingFlags.DeclaredOnly | + BindingFlags.Public | + BindingFlags.Instance | + BindingFlags.Static; + + const MemberTypes memberTypes = MemberTypes.Event | + MemberTypes.Method | + MemberTypes.Property; + + formsMembers = + from o in Type.GetMember("*", memberTypes, bindingFlags) + where + o.IsPublic() && + !o.IsCompilerGenerated() && + !o.IsEqualityOverride() && + !o.IsToStringOverride() && + !LoaderExtensions.IsUnitTested(type, o) + select new FormsMember(this, o); + } + + public FormsLoader FormsLoader { get; } + + public Type Type { get; } + + public IEnumerable<FormsMember> Members() + { + return formsMembers; + } + } +}
\ No newline at end of file |