0

有没有办法在 apex 中获取托管包的前缀名称?

我有一个 SOSL 查询,但该应用程序位于开发人员组织和托管包中,如果我有办法获取包名称,那就太好了,因为我不必对其进行硬编码。

谢谢。

4

2 回答 2

1

AFAIK 这样做的唯一方法是使用元数据 API。您可以调用describeMetadata(),然后评估在describeMetadataResult返回的组织名称空间(字符串)值。

在Apex,您可以使用动态 SOQL/DML 执行一种不太优雅的 try/catch 方法,至少可以确定您怀疑的东西是否确实存在。虽然这不会像元数据 API 那样告诉您实际存在的命名空间前缀。

Lacey 是正确的,您不需要前缀,尽管名称歧义可能会成为问题。因此,例如,如果您有一个自定义对象Expense__c并安装了一个包含 的会计包,那么如果您打算访问托管包对象而不是您自己的对象ACCT__Expense__c,那么您肯定希望明确包含前缀。ACCT__

于 2012-02-14T19:55:28.717 回答
1

如果传入的命名空间不是已安装包(或您正在开发的托管包)的有效命名空间,则 UserInfo.isCurrentUserLicensed('nsPrefix') 将引发 TypeException。我认为这是您在没有元数据 API 的情况下最接近的方法。

于 2012-06-13T19:00:34.537 回答