【问题标题】:How Aspose PDF finds the License ObjectAspose PDF 如何找到许可对象
【发布时间】:2018-12-20 09:23:20
【问题描述】:

这个问题很笼统,与 Aspose 产品无关,但它会帮助我更好地解释这个问题。

Aspose 有两个独立的类:

namespace Aspose.Cells
{
    public class License
    {
        public License();

        public void SetLicense(string licenseName);
        public void SetLicense(Stream stream);
    }
}

public class Workbook : IDisposable
{
        public Workbook();
        public Workbook(FileFormatType fileFormatType);
        public Workbook(string file);
        public Workbook(Stream stream);
        public Workbook(string file, LoadOptions loadOptions);
        public Workbook(Stream stream, LoadOptions loadOptions);

        public WorksheetCollection Worksheets { get; }
        public bool IsLicensed { get; }
}

根据 aspose 的文档,我需要使用以下几行设置许可证密钥每个应用程序一次

Aspose.Cells.License licence = new License();
licence .SetLicense("License file.txt");

然后,我可以使用以下工作簿类而无需再次设置许可证。

 Workbook workbook = new Workbook(stream, new LoadOptions(loadFormat));
 Console.WriteLine(workbook.IsLicensed);

一切正常,但我想了解谁工作簿对象访问许可证对象而不传递许可证对象作为对工作簿的引用?诀窍是什么?看来workbook对象可以直接访问license对象了……

【问题讨论】:

  • 你知道static是什么意思吗?
  • @Omtechguy - 根据定义,静态对象没有引用。它们是全球性的。
  • @Omtechguy - 或者类似的东西(也许它正在锁定一些物理内存,或者做其他事情来创建全局数据)。
  • 可能是第三类,但您可以在非静态类上拥有静态属性。谁知道。这个问题在这里并不是真正的主题,因为它正在处理另一个库的内部实现。
  • 这不是一个答案,它只是一种可能性。这就是为什么这个问题跑题了。

标签: c# aspose


【解决方案1】:

许可证是库级别的属性,库的所有成员都可以访问以进行验证。在应用程序中加载一次库并初始化许可证时,无需再次初始化许可证。使用多线程或实现任何其他架构,一次许可证初始化就足够了,并且库的所有成员(如 Workbook 和其他人)都可以访问它。

您可以访问以下链接,了解有关使用 Aspose.Cells 进行许可的更多详细信息。

https://docs.aspose.com/display/cellsnet/Licensing

注意:我在 Aspose 担任支持开发人员/宣传员。

【讨论】:

  • “库级属性”是什么意思?我在这里看到两个分开的类......你能分享一个这样的两个类之间“链接”的例子吗?
  • 感谢@DavidG 和 Erik Funkenbusch,我明白“库级属性”是一个静态属性,现在答案很明确。谢谢大家!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 2013-03-18
相关资源
最近更新 更多