It seems to me that in my dev org at least, the keys for the map returned by
Schema.GetGlobalDescribe()
do not use namespace prefixes… so does anybody know what happens when there are two objects with the same name in two different namespaces? It seems to me like there may be a bug here.If I try and look up with
Schema.GetGlobalDescribe().get('MyNamespace__MyObject__c')
then I get no hits, but if I doSchema.GetGlobalDescribe().get('MyObject__c').getDescribe().getName()
then I get the name with the prefix, so I’d expect to use that same name to perform lookups in the first case.
Answer
Does Schema.GetGlobalDescribe() Account for Prefixes?
Yep! Use SObjectType.Obj__c.Name
to resolve the namespace, for example:
Static method:
String fullyQualifiedName = SObjectType.Obj__c.Name;
System.debug(fullyQualifiedName);
//ns__Obj__c
String label = Schema.GetGlobalDescribe().get(fullyQualifiedName).getDescribe().getLabel();
System.debug(label);
//Obj
Edit: dynamic method
Replace line 1: String fqName = Type.forName(isPkg ? 'ns' : '', 'Obj__c').getName()
where ns
is set only in the packaging org, eg via Protected Custom Setting
Attribution
Source : Link , Question Author : Matt Lacey , Answer Author : Matt and Neil