/// <summary>
 /// Gets the result by the provider
 /// </summary>
 /// <param name="crri">request information</param>
 /// <param name="args">request arguments</param>
 /// <returns>a Func providing the value</returns>
 public Func<object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
 {
     var resourceId = args[0].Value as string;
     if(string.IsNullOrWhiteSpace(resourceId)) throw new FakeMarkupExtensionException("ResourceLoader token 0 is null or whitespace.");
     var assembly = args.Length == 2 ? args[1].Value as string : null;
     return (string.IsNullOrWhiteSpace(assembly)
         ? (Func<object>)(() => ResourceLoader.GetForCurrentView().GetString(resourceId))
         : (Func<object>)(() => ResourceLoader.GetForCurrentView($"/{assembly}/Resources").GetString(resourceId)));
 }
 /// <summary>
 /// Gets the result by the provider
 /// </summary>
 /// <param name="crri">request information</param>
 /// <param name="args">request arguments</param>
 /// <returns>a Func providing the value</returns>
 public Func<object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
 {
     var id = Guid.NewGuid().ToString();
     _state[id] = 0;
     var vals = args.Select(x => x.Value).ToArray();
     return () =>
     {
         if (_state[id] == vals.Length) _state[id] = 0;
         return vals[_state[id]++];
     };
 }
        /// <summary>
        /// Gets the result by the provider
        /// </summary>
        /// <param name="crri">request information</param>
        /// <param name="args">request arguments</param>
        /// <returns>a Func providing the value</returns>
        public Func <object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
        {
            var resourceId = args[0].Value as string;

            if (string.IsNullOrWhiteSpace(resourceId))
            {
                throw new FakeMarkupExtensionException("ResourceLoader token 0 is null or whitespace.");
            }
            var assembly = args.Length == 2 ? args[1].Value as string : null;

            return(string.IsNullOrWhiteSpace(assembly)
                                ? (Func <object>)(() => ResourceLoader.GetForCurrentView().GetString(resourceId))
                                : (Func <object>)(() => ResourceLoader.GetForCurrentView($"/{assembly}/Resources").GetString(resourceId)));
        }
        /// <summary>
        /// Gets the result by the provider
        /// </summary>
        /// <param name="crri">request information</param>
        /// <param name="args">request arguments</param>
        /// <returns>a Func providing the value</returns>
        public Func <object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
        {
            var id = Guid.NewGuid().ToString();

            _state[id] = 0;
            var vals = args.Select(x => x.Value).ToArray();

            return(() =>
            {
                if (_state[id] == vals.Length)
                {
                    _state[id] = 0;
                }
                return vals[_state[id]++];
            });
        }
        /// <summary>
        /// Gets the result by the provider
        /// </summary>
        /// <param name="crri">request information</param>
        /// <param name="args">request arguments</param>
        /// <returns>a Func providing the value</returns>
        public Func<object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
        {
            if(args.Count() != 1) throw new FakeMarkupExtensionException("Invalid token count for Debug provider.");
            switch (args[0].Value as string)
            {
                case "IsInDebugMode":

                    return () => GetConvertedValue(_isInDebugMode, crri.PropertyType);
                case "!IsInDebugMode":
                    return () => GetConvertedValue(!_isInDebugMode, crri.PropertyType);
                case "IsDebuggerAttached":
                    return () => GetConvertedValue(_isDebuggerAttached, crri.PropertyType);
                case "!IsDebuggerAttached":
                    return () => GetConvertedValue(!_isDebuggerAttached, crri.PropertyType);
            }
            throw new FakeMarkupExtensionException($"Debug provider doesn't provide result for token {args[0]}");
        }
 /// <summary>
 /// Gets the result by the provider
 /// </summary>
 /// <param name="crri">request information</param>
 /// <param name="args">request arguments</param>
 /// <returns>a Func providing the value</returns>
 public Func<object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
 {
     if (args.Length != 6)
     {
         throw new FakeMarkupExtensionException($"StaticFakeMarkupExtensionProvider: invalid argument count in {crri.ResourceId}");
     }
     try
     {
         var aqn = $"{(string)args[0].Value}, {(string)args[1].Value}, Version={(string)args[2].Value}, Culture={(string)args[3].Value}, PublicKeyToken={(string)args[4].Value}";
         var test = Type.GetType(aqn).GetTypeInfo().DeclaredMembers.SingleOrDefault(x => x.Name == (string) args[5].Value);
         if (test == null) throw new MissingMemberException($"{(string) args[5].Value} does not exist in {aqn}");
         return () => test.GetValue(null);
     }
     catch (Exception e)
     {
         throw new FakeMarkupExtensionException($"StaticFakeMarkupExtensionProvider: type resolution failed in {crri.ResourceId}", e);
     }
 }
 /// <summary>
 /// Gets the result by the provider
 /// </summary>
 /// <param name="crri">request information</param>
 /// <param name="args">request arguments</param>
 /// <returns>a Func providing the value</returns>
 public Func <object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
 {
     if (args.Length != 6)
     {
         throw new FakeMarkupExtensionException($"StaticFakeMarkupExtensionProvider: invalid argument count in {crri.ResourceId}");
     }
     try
     {
         var aqn  = $"{(string)args[0].Value}, {(string)args[1].Value}, Version={(string)args[2].Value}, Culture={(string)args[3].Value}, PublicKeyToken={(string)args[4].Value}";
         var test = Type.GetType(aqn).GetTypeInfo().DeclaredMembers.SingleOrDefault(x => x.Name == (string)args[5].Value);
         if (test == null)
         {
             throw new MissingMemberException($"{(string) args[5].Value} does not exist in {aqn}");
         }
         return(() => test.GetValue(null));
     }
     catch (Exception e)
     {
         throw new FakeMarkupExtensionException($"StaticFakeMarkupExtensionProvider: type resolution failed in {crri.ResourceId}", e);
     }
 }
        /// <summary>
        /// Gets the result by the provider
        /// </summary>
        /// <param name="crri">request information</param>
        /// <param name="args">request arguments</param>
        /// <returns>a Func providing the value</returns>
        public Func <object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
        {
            if (args.Count() != 1)
            {
                throw new FakeMarkupExtensionException("Invalid token count for Debug provider.");
            }
            switch (args[0].Value as string)
            {
            case "IsInDebugMode":

                return(() => GetConvertedValue(_isInDebugMode, crri.PropertyType));

            case "!IsInDebugMode":
                return(() => GetConvertedValue(!_isInDebugMode, crri.PropertyType));

            case "IsDebuggerAttached":
                return(() => GetConvertedValue(_isDebuggerAttached, crri.PropertyType));

            case "!IsDebuggerAttached":
                return(() => GetConvertedValue(!_isDebuggerAttached, crri.PropertyType));
            }
            throw new FakeMarkupExtensionException($"Debug provider doesn't provide result for token {args[0]}");
        }
 /// <summary>
 /// Gets the result by the provider
 /// </summary>
 /// <param name="crri">request information</param>
 /// <param name="args">request arguments</param>
 /// <returns>a Func providing the value</returns>
 public Func<object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
 {
     return () => null;
 }
Пример #10
0
 /// <summary>
 /// Gets the result by the provider
 /// </summary>
 /// <param name="crri">request information</param>
 /// <param name="args">request arguments</param>
 /// <returns>a Func providing the value</returns>
 public Func <object> GetResult(CustomResourceRequestInfo crri, params FakeMarkupExtensionToken[] args)
 {
     return(() => null);
 }