public override IImmutableDictionary <string, ITypeSpecBuilder> Process(IReflector reflector, Type type, IMethodRemover methodRemover, ISpecificationBuilder specification, IImmutableDictionary <string, ITypeSpecBuilder> metamodel) { if (typeof(IViewModel).IsAssignableFrom(type)) { IFacet facet; var deriveMethod = type.GetMethod("DeriveKeys", new Type[] { }); var populateMethod = type.GetMethod("PopulateUsingKeys", new[] { typeof(string[]) }); var toRemove = new List <MethodInfo> { deriveMethod, populateMethod }; if (typeof(IViewModelEdit).IsAssignableFrom(type)) { facet = new ViewModelEditFacetConvention(specification); } else if (typeof(IViewModelSwitchable).IsAssignableFrom(type)) { var isEditViewMethod = type.GetMethod("IsEditView"); toRemove.Add(isEditViewMethod); facet = new ViewModelSwitchableFacetConvention(specification); } else { facet = new ViewModelFacetConvention(specification); } methodRemover.RemoveMethods(toRemove.ToArray()); FacetUtils.AddFacet(facet); } return(metamodel); }
public override void Process(IReflector reflector, Type type, IMethodRemover methodRemover, ISpecificationBuilder specification) { IFacet facet = null; if (!type.IsInterface && typeof(IViewModel).IsAssignableFrom(type)) { MethodInfo deriveMethod = type.GetMethod("DeriveKeys", new Type[] {}); MethodInfo populateMethod = type.GetMethod("PopulateUsingKeys", new[] { typeof(string[]) }); var toRemove = new List <MethodInfo> { deriveMethod, populateMethod }; if (typeof(IViewModelEdit).IsAssignableFrom(type)) { facet = new ViewModelEditFacetConvention(specification); } else if (typeof(IViewModelSwitchable).IsAssignableFrom(type)) { MethodInfo isEditViewMethod = type.GetMethod("IsEditView"); toRemove.Add(isEditViewMethod); facet = new ViewModelSwitchableFacetConvention(specification); } else { facet = new ViewModelFacetConvention(specification); } methodRemover.RemoveMethods(toRemove.ToArray()); } FacetUtils.AddFacet(facet); }
public override bool Process(Type type, IMethodRemover methodRemover, IFacetHolder holder) { IFacet facet = null; if (!type.IsInterface && typeof (IViewModel).IsAssignableFrom(type)) { MethodInfo deriveMethod = type.GetMethod("DeriveKeys", new Type[] {}); MethodInfo populateMethod = type.GetMethod("PopulateUsingKeys", new[] {typeof (string[])}); var toRemove = new List<MethodInfo> {deriveMethod, populateMethod}; if (typeof (IViewModelEdit).IsAssignableFrom(type)) { facet = new ViewModelEditFacetConvention(holder); } else if (typeof (IViewModelSwitchable).IsAssignableFrom(type)) { MethodInfo isEditViewMethod = type.GetMethod("IsEditView"); toRemove.Add(isEditViewMethod); facet = new ViewModelSwitchableFacetConvention(holder); } else { facet = new ViewModelFacetConvention(holder); } methodRemover.RemoveMethods(toRemove.ToArray()); } return FacetUtils.AddFacet(facet); }