public IDataType GetType(string typeName) { Type foundType = null; if (typeName.EndsWith("]]")) { var regex = new Regex(@"^(?<collectionType>.+?)\[\[(?<paramterTypes>.+?)\]\]$"); var matches = regex.Matches(typeName); if (matches.Count == 1) { var parameters = matches[0].Groups["paramterTypes"].Value; var valueTypeName = matches[0].Groups["collectionType"].Value; var valueType = typeFinder.GetType(valueTypeName); if (valueType != null) { var paramterTypes = GetParamterTypes(parameters); foundType = valueType.GetTargetType().MakeGenericType(paramterTypes); } if (foundType != null) { typesCache.Add(typeName, foundType); } } } return(foundType == null ? null : dataTypeFactory.Create(foundType)); }
public object Get(INXmlElementReader nodeReader) { object objectInstance; using (var itemNodesReader = nodeReader.GetNextChildNode("items")) { var innerText = itemNodesReader.GetPayload().Trim('\r', '\n', ',', '\t').Replace("\r\n", string.Empty); var values = innerText.Split(','); var valuesList = new ArrayList(); foreach (var valueText in values) { valuesList.Add(double.Parse(valueText)); } var typeName = nodeReader.Attributes.Get("type"); var objectType = typeFinder.GetType(typeName); objectInstance = valuesList.ToArray(objectType.GetElementType().GetTargetType()); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance); } return(objectInstance); }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); return(Enum.Parse(type.GetTargetType(), nodeReader.GetPayload().Trim())); }
public object Get(INXmlElementReader nodeReader) { var valuesList = new ArrayList(); using (var itemNodes = nodeReader.GetNextChildNode("items")) { INXmlElementReader itemNode; while ((itemNode = itemNodes.GetNextChildNode()) != null) { if (objectReader.CanRead(itemNode)) { valuesList.Add(objectReader.Get(itemNode)); } itemNode.Dispose(); } } var elementType = typeFinder.GetType(nodeReader.Attributes.Get("type")).GetElementType(); var objectInstance = valuesList.ToArray(elementType.GetTargetType()); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), objectInstance); return(objectInstance); }
public bool Authorize(string area, string controllerName, string actionName, string roleString) { //调试模式不验证权限 if (_webConfig.Debug) { return(true); } var routeData = new Dictionary <string, object> { { "area", area }, { "controller", controllerName }, { "action", actionName } }; var virtualPathData = RouteTable.Routes.GetVirtualPathForArea(_httpContextBase.Request.RequestContext, new RouteValueDictionary(routeData)); // ASP.NET MVC5 :System.Web.Mvc.Routing.RouteDataTokenKeys const Namespaces = "Namespaces" // ASP.NET MVC Source Code: https://github.com/aspnet/AspNetWebStack var controllerNamespaces = virtualPathData.DataTokens["Namespaces"] as string[]; if (controllerNamespaces == null || controllerNamespaces.Length == 0) { throw new Exception("未找到对应路由绑定的控制器命名空间"); } Type controllerType = null; for (int i = 0; i < controllerNamespaces.Length; i++) { var controllerClassName = string.Format($"{controllerNamespaces[i]}.{controllerName}Controller"); controllerType = _typeFinder.GetType(controllerClassName); if (controllerType == null && i == controllerNamespaces.Length - 1) { throw new Exception($"没有找到控制器类型,检索的控制器类型完全名称为{controllerClassName}"); } } var action = controllerType.GetMethods().FirstOrDefault(p => (p.Name == actionName && p.GetCustomAttribute <ActionNameAttribute>(true) == null) || p.GetCustomAttribute <ActionNameAttribute>(true).Name == actionName); if (action == null) { return(true); } var roleAttribute = action.GetCustomAttribute <RoleAuthorizeAttribute>(); if (roleAttribute == null) { return(true); } var roles = JsonConvert.DeserializeObject <List <RoleItem> >(roleString); return(roles.Any(p => p.Controller == controllerName && p.AuthorizeActions.Contains(actionName))); }
public IDataType GetType(string typeName) { var typeDefinition = migrationDefinition.GetTypeDefinition(typeName); if (typeDefinition != null) { typeName = typeDefinition.GetTypeName(); } return(typeFinder.GetType(typeName)); }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); var instance = appObjectRepository.Get(type.GetTargetType()); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance); return(instance); }
public IDataType GetType(string typeName) { while (typeName[0] == '!') { var regex = new Regex(@"^!(?<id>\d+)(?<remainder>.*)$", RegexOptions.IgnorePatternWhitespace); var matches = regex.Matches(typeName); var id = matches[0].Groups["id"].Value; var remainder = matches[0].Groups["remainder"].Value; var typeIndex = int.Parse(id); typeName = names[typeIndex] + remainder; } var isArray = typeName.EndsWith("[]"); if (isArray) { return(typeFinder.GetType(typeName.Substring(0, typeName.Length - "[]".Length)).MakeArrayType()); } return(typeFinder.GetType(typeName)); }
/// <summary> /// Gets the binding. /// </summary> public static Binding ConvertToBinding(this string bindingExpressionAsText, ITypeFinder typeFinder) { var binding = new Binding { Mode = BindingMode.TwoWay }; var list = bindingExpressionAsText.Split('{', '}', '=', ',', ' ').Where(x => !string.IsNullOrWhiteSpace(x)).Select(x => x.Trim()).ToList(); var pathIndex = list.FindIndex(x => x.Contains("Binding")) + 1; if (list[pathIndex] == "Path") { pathIndex += 1; } binding.Path = new PropertyPath(list[pathIndex]); var modeIndex = list.FindIndex(x => x == "Mode"); if (modeIndex > 0) { var mode = BindingMode.Default; var isParsed = Enum.TryParse(list[modeIndex + 1], true, out mode); if (!isParsed) { throw Errors.ParsingError(list[modeIndex + 1]); } binding.Mode = mode; } var converterIndex = list.FindIndex(x => x == "Converter"); if (converterIndex > 0) { var converterTypeName = list[converterIndex + 1]; var converterType = typeFinder.GetType(converterTypeName); binding.Converter = (IValueConverter)Activator.CreateInstance(converterType); } var updateSourceTriggerIndex = list.FindIndex(x => x == "UpdateSourceTrigger"); if (updateSourceTriggerIndex > 0) { var updateSourceTriggerValue = list[updateSourceTriggerIndex + 1]; binding.UpdateSourceTrigger = (UpdateSourceTrigger)Enum.Parse(typeof(UpdateSourceTrigger), updateSourceTriggerValue, true); } return(binding); }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); var typeAccessor = new TypeAccessor(type.GetTargetType(), docObjectRepository); var instance = typeAccessor.GetInstance(); readObjects.Add(nodeReader.Attributes.GetInteger("ID"), instance); ReadMembers(instance, nodeReader, type); return(instance); }
/// <summary> /// Searches the dependency property in view. /// </summary> public static DependencyProperty SearchDependencyProperty(string dpFullName, ITypeFinder typeFinder) { var lastDotIndex = dpFullName.LastIndexOf('.'); var propertyName = dpFullName.Substring(lastDotIndex + 1); var fieldInfo = typeFinder.GetType(dpFullName.Substring(0, lastDotIndex)) .GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.FlattenHierarchy) .FirstOrDefault(p => p.FieldType == typeof(DependencyProperty) && p.Name == propertyName); if (fieldInfo == null) { return(null); } return((DependencyProperty)fieldInfo.GetValue(null)); }
public object Get(INXmlElementReader nodeReader) { var typeName = nodeReader.Attributes.Get("type"); var type = typeFinder.GetType(typeName); var instance = Activator.CreateInstance(type.GetTargetType()); using (var membersNodeReader = nodeReader.GetNextChildNode("members")) { if (membersNodeReader == null) { throw new NXmlReaderFormatException("Missing class members node."); } ReadFields(instance, membersNodeReader, type); } return(instance); }
public IDataType GetType(string typeName) { return(typeFinder.GetType(typeName)); }
public void ResolveTypeFinder() { Assert.Equal(typeof(WebAppTypeFinder), _typeFinder.GetType()); }