0

是否可以将枚举投射到另一个对象?

我列举了一个 blob 容器列表。我想将枚举类型隐式转换为命名的CloudBlobContainer

这是我尝试过的一个例子

public static class BlobContainerCasts
{
    public static implicit operator CloudBlobContainer(EnumTypes.BlobContainerNames BlobContainerName)
    {
        return CloudStorageAccount.DevelopmentStorageAccount.CreateCloudBlobClient().GetContainerReference(Enum.GetName(typeof(EnumTypes.BlobContainerNames), BlobContainerName));
    }
}

不幸的是,它不会编译,因为它不遵守关于用户定义转换的规则(它必须转换为封闭类型或从封闭类型转换)

那么,有没有办法在不创建这样的方法的情况下做到这一点?

public CloudBlobContainer GetBlobContainer(EnumTypes.BlobContainerNames BlobContainerName)
{...}

感谢您的帮助。

4

2 回答 2

0

您可以使用扩展方法:

public static CloudBlobContainerExtensions {
    public static CloudBlobContainer GetContainer(this EnumTypes.BlobContainerNames BlobContainerName)
    {
        return CloudStorageAccount.DevelopmentStorageAccount.CreateCloudBlobClient().GetContainerReference(Enum.GetName(typeof(EnumTypes.BlobContainerNames), BlobContainerName));
    }
}
//elsewhere
var myContainer = CloudBlobContainer.GetContainer(EnumTypes.BlobContainerNames.SomeName);

旁注:您确定要显式引用 DevelopmentStorageAccount 而不是从设置中获取存储帐户吗?

于 2012-07-19T18:41:00.873 回答
0

基于breischl answere,这是解决方案:

public static CloudBlobContainerExtensions {
    public static CloudBlobContainer GetContainer(this EnumTypes.BlobContainerNames BlobContainerName)
    {
        return CloudStorageAccount.DevelopmentStorageAccount.CreateCloudBlobClient().GetContainerReference(Enum.GetName(typeof(EnumTypes.BlobContainerNames), BlobContainerName));
    }
}

//elsewhere
var myContainer = EnumTypes.BlobContainerNames.somename.GetContainer();
于 2012-07-20T08:00:18.373 回答