/// <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); } } } }
/// <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); } } } }