public void CtorTest() { var a = new TypeForwardedFromAttribute("System.Web, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a"); Assert.AreEqual("System.Web, Version=2.0.0.0, Culture=Neutral, PublicKeyToken=b03f5f7f11d50a3a", a.AssemblyFullName); var nullArgumentDoesntThrowException = new TypeForwardedFromAttribute(null); }
public static void TypeForwardedFromAttributeTests() { string assemblyFullName = "MyAssembly"; var attr = new TypeForwardedFromAttribute(assemblyFullName); Assert.Equal(assemblyFullName, attr.AssemblyFullName); AssertExtensions.Throws <ArgumentNullException>("assemblyFullName", () => new TypeForwardedFromAttribute(null)); AssertExtensions.Throws <ArgumentNullException>("assemblyFullName", () => new TypeForwardedFromAttribute("")); }
internal void AddImport(Type type, Hashtable types) { if (((type != null) && !TypeScope.IsKnownType(type)) && (types[type] == null)) { types[type] = type; Type baseType = type.BaseType; if (baseType != null) { this.AddImport(baseType, types); } Type declaringType = type.DeclaringType; if (declaringType != null) { this.AddImport(declaringType, types); } foreach (Type type4 in type.GetInterfaces()) { this.AddImport(type4, types); } ConstructorInfo[] constructors = type.GetConstructors(); for (int i = 0; i < constructors.Length; i++) { ParameterInfo[] parameters = constructors[i].GetParameters(); for (int j = 0; j < parameters.Length; j++) { this.AddImport(parameters[j].ParameterType, types); } } if (type.IsGenericType) { Type[] genericArguments = type.GetGenericArguments(); for (int k = 0; k < genericArguments.Length; k++) { this.AddImport(genericArguments[k], types); } } TempAssembly.FileIOPermission.Assert(); Assembly a = type.Module.Assembly; if (DynamicAssemblies.IsTypeDynamic(type)) { DynamicAssemblies.Add(a); } else { object[] customAttributes = type.GetCustomAttributes(typeof(TypeForwardedFromAttribute), false); if (customAttributes.Length > 0) { TypeForwardedFromAttribute attribute = customAttributes[0] as TypeForwardedFromAttribute; Assembly assembly2 = Assembly.Load(attribute.AssemblyFullName); this.imports[assembly2] = assembly2.Location; } this.imports[a] = a.Location; } } }
internal static string GetClrAssemblyName(Type type, out bool hasTypeForwardedFrom) { if (type == null) { throw new ArgumentNullException("type"); } object[] customAttributes = type.GetCustomAttributes(typeof(TypeForwardedFromAttribute), false); if ((customAttributes != null) && (customAttributes.Length > 0)) { hasTypeForwardedFrom = true; TypeForwardedFromAttribute attribute = (TypeForwardedFromAttribute)customAttributes[0]; return(attribute.AssemblyFullName); } hasTypeForwardedFrom = false; return(type.Assembly.FullName); }
internal static string GetClrAssemblyName(Type type, out bool hasTypeForwardedFrom) { if ((object)type == null) { throw new ArgumentNullException(nameof(type)); } object[] typeAttributes = type.GetCustomAttributes(typeof(TypeForwardedFromAttribute), false); if (typeAttributes != null && typeAttributes.Length > 0) { hasTypeForwardedFrom = true; TypeForwardedFromAttribute typeForwardedFromAttribute = (TypeForwardedFromAttribute)typeAttributes[0]; return(typeForwardedFromAttribute.AssemblyFullName); } else { hasTypeForwardedFrom = false; return(type.Assembly.FullName); } }
// SxS: This method does not take any resource name and does not expose any resources to the caller. // It's OK to suppress the SxS warning. internal void AddImport(Type type, Hashtable types) { if (type == null) { return; } if (TypeScope.IsKnownType(type)) { return; } if (types[type] != null) { return; } types[type] = type; Type baseType = type.GetTypeInfo().BaseType; if (baseType != null) { AddImport(baseType, types); } Type declaringType = type.DeclaringType; if (declaringType != null) { AddImport(declaringType, types); } foreach (Type intf in type.GetInterfaces()) { AddImport(intf, types); } ConstructorInfo[] ctors = type.GetConstructors(); for (int i = 0; i < ctors.Length; i++) { ParameterInfo[] parms = ctors[i].GetParameters(); for (int j = 0; j < parms.Length; j++) { AddImport(parms[j].ParameterType, types); } } if (type.GetTypeInfo().IsGenericType) { Type[] arguments = type.GetGenericArguments(); for (int i = 0; i < arguments.Length; i++) { AddImport(arguments[i], types); } } Module module = type.GetTypeInfo().Module; Assembly assembly = module.Assembly; if (DynamicAssemblies.IsTypeDynamic(type)) { DynamicAssemblies.Add(assembly); return; } object[] typeForwardedFromAttribute = type.GetCustomAttributes(typeof(TypeForwardedFromAttribute), false); if (typeForwardedFromAttribute.Length > 0) { TypeForwardedFromAttribute originalAssemblyInfo = typeForwardedFromAttribute[0] as TypeForwardedFromAttribute; Assembly originalAssembly = Assembly.Load(new AssemblyName(originalAssemblyInfo.AssemblyFullName)); //_imports[originalAssembly] = originalAssembly.Location; } //_imports[assembly] = assembly.Location; }