public TypeFabrication Fabricate(Type baseType) { TypeFabrication result = Fabricate(baseType.AssemblyQualifiedName); result.BaseType = baseType; return(result); }
public TypeFabrication Fabricate(string def) { TypeFabrication result = new TypeFabrication(); List <String> genericDefs = null; string cnt = "0"; genericDefs = this.SplitDefTypes(def); if (genericDefs.Count > 0) { def = genericDefs.First(); genericDefs.RemoveAt(0); } cnt = FindGenericCnt(def); List <TypeFabrication> generics = new List <TypeFabrication>(); for (int i = 0; i < genericDefs.Count; i++) { generics.Add(Fabricate(genericDefs[i])); } string[] elements = def.Split(','); FillFabricationWithElements(result, elements); result.GenericCnt = Convert.ToInt32(cnt); result.GenericTypes.Clear(); result.GenericTypes.AddRange(generics); result.CanInstantiate(false); return(result); }
protected Type FindInAssembly(TypeFabrication fab, Assembly assembly) { IEnumerator <TypeInfo> et = assembly.DefinedTypes.GetEnumerator(); while (et.MoveNext()) { if (et.Current.Name.ToLower().Equals(fab.Name.ToLower())) { return(et.Current.AsType()); } } return(null); }
public Type FindBaseType(TypeFabrication fab) { Type result = null; if (fab != null) { bool findAssembly = fab.Assembly != ""; result = FindInAssemblyList(fab, pluginAssemblies.AsEnumerable().GetEnumerator()); if (result == null) { result = FindInAssemblyList(fab, preloadedAssemblies.AsEnumerable().GetEnumerator()); } } return(result); }
protected void FillFabricationWithElements(TypeFabrication result, string[] elements) { for (int i = 0; i < elements.Count(); i++) { elements[i] = elements[i].Trim(); if (elements[i].StartsWith("Version=")) { result.Version = elements[i].Replace("Version=", "").Trim(); } else if (elements[i].StartsWith("Culture=")) { result.Culture = elements[i].Replace("Culture=", "").Trim(); } else if (elements[i].StartsWith("PublicKeyToken=")) { result.PublicKeyToken = elements[i].Replace("PublicKeyToken=", "").Trim(); } else if (i == 1) { result.Assembly = elements[i].Trim(); } else if (i == 0) { if (elements[i].Contains('.')) { result.Name = elements[i].Substring(elements[i].LastIndexOf('.') + 1).Trim(); result.Namespace = elements[i].Substring(0, elements[i].LastIndexOf('.')).Trim(); } else { result.Name = elements[i].Trim(); } if (result.Name.Contains("`")) { result.Name = result.Name.Substring(0, result.Name.IndexOf("`")); } } } }
protected Type FindInAssemblyList(TypeFabrication fab, IEnumerator <Assembly> enumerator) { Type result = null; bool deepSearch = DeepSearch && (String.IsNullOrWhiteSpace(fab.Namespace)); bool findAssembly = fab.Assembly != ""; while ((result == null) && (enumerator.MoveNext())) { Assembly assembly = enumerator.Current; if (assembly.GetName().Name == fab.Assembly) { result = assembly.GetType(fab.FullName); } else { result = assembly.GetType(fab.FullName); if ((result == null) && (deepSearch)) { result = FindInAssembly(fab, assembly); } } } return(result); }