private static void BuildClass(ServiceClassBuilder builder, Type type) { // // Build... // IServiceClassReflector reflector = (IServiceClassReflector)FindCustomAttribute(type, typeof(IServiceClassReflector), true); if (reflector == null) { reflector = new JsonRpcServiceAttribute(); TrySetAttachment(reflector, type); } reflector.Build(builder); // // Fault in the type name if still without name. // if (builder.Name.Length == 0) { builder.Name = type.Name; } // // Modify... // object[] modifiers = GetCustomAttributes(type, typeof(IServiceClassModifier), true); foreach (IServiceClassModifier modifier in modifiers) { modifier.Modify(builder); } }
private static ServiceClass BuildFromType(Type type) { ServiceClassBuilder builder = new ServiceClassBuilder(); BuildClass(builder, type); return(builder.CreateClass()); }
public void FirstParameterOfStaticMethodDoesNotAppearInTheReflectedModel() { ServiceClassBuilder scb = new ServiceClassBuilder(); MethodInfo method = typeof(ServiceWithStaticMethod).GetMethod("StaticMethod"); JsonRpcMethodAttribute attribute = new JsonRpcMethodAttribute(); IAttributeAttachment attachment = attribute; attachment.SetAttachment(method); IMethodReflector reflector = attribute; MethodBuilder mb = scb.DefineMethod(); reflector.Build(mb); Assert.AreEqual(0, mb.Parameters.Count); }
void IServiceClassReflector.Build(ServiceClassBuilder builder) { if (_type == null) { throw new InvalidOperationException(); } builder.Name = Name; // // Get all the public instance methods on the type and create a // filtered table of those to expose from the service. // MethodInfo[] publicMethods = _type.GetMethods(BindingFlags.Public | BindingFlags.Instance); foreach (MethodInfo method in publicMethods) { if (JsonRpcServiceReflector.ShouldBuild(method)) { JsonRpcServiceReflector.BuildMethod(builder.DefineMethod(), method); } } }
void IServiceClassModifier.Modify(ServiceClassBuilder builder) { builder.Description = Text; }