Example #1
0
 /// <summary>
 /// Wraps all component methods returning IEnumerable{T} or IQueryable{T}.
 /// </summary>
 /// <typeparam name="I">Interface to wrap.</typeparam>
 /// <param name="uniqueName">Component unique name.</param>
 private void RegisterQueryableMethods <I>(string uniqueName)
 {
     foreach (var mi in typeof(I).GetMethods())
     {
         if (mi.IsGenericMethod && mi.GetParameters().Length == 0)
         {
             if (typeof(IEnumerable).IsAssignableFrom(mi.ReturnType) || typeof(IQueryable).IsAssignableFrom(mi.ReturnType))
             {
                 var queryHandler  = new ZyanMethodQueryHandler(this, uniqueName, mi);
                 var remoteHandler = new ZyanServerQueryHandler(queryHandler);
                 RegisterComponent <IQueryRemoteHandler, ZyanServerQueryHandler>(queryHandler.MethodQueryHandlerName, remoteHandler, null);
             }
         }
     }
 }
Example #2
0
 /// <summary>
 /// Wraps all component methods returning IEnumerable{T} or IQueryable{T}.
 /// </summary>
 /// <typeparam name="I">Interface to wrap.</typeparam>
 /// <param name="uniqueName">Component unique name.</param>
 private void RegisterQueryableMethods <I>(string uniqueName)
 {
     foreach (var mi in typeof(I).GetMethods())
     {
         if (mi.IsGenericMethod && mi.GetParameters().Length == 0 && mi.ReturnType.IsGenericType)
         {
             var returnTypeDef = mi.ReturnType.GetGenericTypeDefinition();
             if (returnTypeDef == typeof(IEnumerable <>) || returnTypeDef == typeof(IQueryable <>))
             {
                 var queryHandler  = new ZyanMethodQueryHandler(this, uniqueName, mi);
                 var remoteHandler = new ZyanServerQueryHandler(queryHandler);
                 RegisterComponent <IQueryRemoteHandler, ZyanServerQueryHandler>(queryHandler.MethodQueryHandlerName, remoteHandler, null);
             }
         }
     }
 }