/// <summary> /// This extension method will compute the fully-qualified assembly name given the extension-name, resource-name and the /// containing-classes /// </summary> /// <param name="extensionName"></param> /// <param name="resourceName"></param> /// <param name="containingClassName"></param> /// <returns>fully-qualified assembly name</returns> public static string GetExtensionResourceClassAssemblyQualifiedName( string extensionName, string resourceName, string containingClassName) { if (string.IsNullOrEmpty(extensionName)) { throw new ArgumentNullException(nameof(extensionName)); } string extensionAssemblyName = GetExtensionAssemblyName(extensionName); string @namespace = EdFiConventions.CreateResourceNamespace( EdFiConventions.ProperCaseName, resourceName, null, null, null, extensionName); string extensionResourceClassTypeName = $"{@namespace}.{GetExtensionClassName(containingClassName)}"; return($"{extensionResourceClassTypeName}, {extensionAssemblyName}"); }
public static string GetExtensionClassAssemblyQualifiedName(Type edFiStandardType, string extensionName) { string @namespace; string extensionClassTypeName; string extensionAssemblyName; if (edFiStandardType.IsEdFiEntity()) { string aggregateName = ParseAggregateNameFromEntityType(edFiStandardType); // As of this implementation: // Entity: EdFi.Ods.Entities.NHibernate.StudentAggregate.EdFi.{className} // Extension Entity: EdFi.Ods.Entities.NHibernate.StudentAggregate.Sample.{extensionClassName} @namespace = Namespaces.Entities.NHibernate.AggregateNamespaceForEntity( Namespaces.Entities.NHibernate.BaseNamespace, aggregateName, extensionName); extensionClassTypeName = $"{@namespace}.{GetExtensionClassName(edFiStandardType.Name)}"; extensionAssemblyName = GetExtensionAssemblyName(extensionName); } else { //If standard type exists in profile assembly, use edFiStandardType assembly name. //Otherwise, use extension conventions to determine assembly name. bool isProfileAssembly = EdFiConventions.IsProfileAssembly(edFiStandardType.Assembly); extensionAssemblyName = isProfileAssembly ? edFiStandardType.Assembly.GetName() .Name : GetExtensionAssemblyName(extensionName); var profileName = string.Empty; if (isProfileAssembly) { //In This case we are within a profile context //the profile name is on the end of the assembly name if (!string.IsNullOrWhiteSpace(edFiStandardType.Namespace)) { profileName = edFiStandardType.Namespace.Split('.') .Last(); } } var aggregateName = ParseAggregateNameFromResourceType(edFiStandardType); @namespace = EdFiConventions.CreateResourceNamespace( EdFiConventions.ProperCaseName, aggregateName, profileName, null, null, extensionName); extensionClassTypeName = $"{@namespace}.{GetExtensionClassName(edFiStandardType.Name)}"; // Verify that suffix was trimmed, if not then provided type doesn't follow expected convention if (@namespace == edFiStandardType.Namespace) { throw new Exception( $"The namespace of the supplied Ed-Fi standard type '{edFiStandardType.FullName}' does not follow expected conventions."); } } return($"{extensionClassTypeName}, {extensionAssemblyName}"); }