BLOB 存储: 创建自定义提供程序

    第一步是创建一个实现 接口或 BlobProviderBase 抽象类继承的类.

    • MyCustomBlobProvider 继承 BlobProviderBase 并覆盖 abstract 方法. 实际的实现取决于你.
    • 实现 ITransientDependency 接口将这个类注做为瞬态服务注册到依赖注入系统.
    1. Configure<AbpBlobStoringOptions>(options =>
    2. {
    3. options.Containers.ConfigureDefault(container =>
    4. {
    5. container.ProviderType = typeof(MyCustomBlobProvider);
    6. });
    7. });

    如果你想提供一个更简单的配置方式,可以为 BlobContainerConfiguration 类创建一个扩展方法:

    然后你可以使用扩展方法更容易地配置容器:

    1. Configure<AbpBlobStoringOptions>(options =>
    2. {
    3. options.Containers.ConfigureDefault(container =>
    4. });
    5. });

    额外的配置选项

    然后你可以这样更改 MyBlobContainerConfigurationExtensions 类:

    1. public static class MyBlobContainerConfigurationExtensions
    2. {
    3. public static BlobContainerConfiguration UseMyCustomBlobProvider(
    4. this BlobContainerConfiguration containerConfiguration,
    5. Action<MyCustomBlobProviderConfiguration> configureAction)
    6. {
    7. containerConfiguration.ProviderType = typeof(MyCustomBlobProvider);
    8. configureAction.Invoke(
    9. new MyCustomBlobProviderConfiguration(containerConfiguration)
    10. );
    11. return containerConfiguration;
    12. }
    13. this BlobContainerConfiguration containerConfiguration)
    14. {
    15. return new MyCustomBlobProviderConfiguration(containerConfiguration);
    16. }
    17. }
    • UseMyCustomBlobProvider 方法添加了一个参数,允许开发人员设置其他选项.
    • 添加了一个新的 GetMyCustomBlobProviderConfiguration 方法,该方法将在 MyCustomBlobProvider 类内使用获取配置的值.

    然后任何人都可以如下设置 MyOption1:

    最后你可以使用 GetMyCustomBlobProviderConfiguration 方法访问额外的选项:

    1. public class MyCustomBlobProvider : BlobProviderBase, ITransientDependency
    2. {
    3. public override Task SaveAsync(BlobProviderSaveArgs args)
    4. {
    5. var config = args.Configuration.GetMyCustomBlobProviderConfiguration();
    6. var value = config.MyOption1;
    7. //...
    8. }

    贡献?