在为API编写合同时,我发现自己一遍又一遍地重复同样的事情。例如,需要复制粘贴复杂json对象的正则表达式验证。 那很乏味而且不是很干。
我正在使用Kotlin DSL和Maven
我试图将公共部分提取到另一个文件中以重复使用。 (Kotlin扩展函数为ftw。)
尝试了多种方法以重用该文件后,我放弃了。
公共部分应尽可能接近实际合同。我不想将它们导出到另一个项目中,并单独构建它们,因为它们是合同的重要组成部分。
我尝试了以下方法:
@file:DependOn
和using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using Microsoft.Azure.Storage;
using Microsoft.Azure.Storage.Blob;
namespace ListLastModificationOnBlob
{
class Program
{
static void Main(string[] args)
{
MainAsync().Wait();
}
static async Task MainAsync()
{
string storageAccount_connectionString = @"Your connection string";
// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(storageAccount_connectionString);
// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
var containers = await ListContainersAsync(blobClient);
foreach (var container in containers)
{
Console.WriteLine(container.Name);
try
{
//root directory
CloudBlobDirectory dira = container.GetDirectoryReference(string.Empty);
//true for all sub directories else false
var rootDirFolders = dira.ListBlobsSegmentedAsync(true, BlobListingDetails.Metadata, null, null, null, null).Result;
using (var w = new StreamWriter($"{container.Name}.csv"))
{
foreach (var blob in rootDirFolders.Results)
{
if (blob is CloudBlob blockBlob)
{
var time = blockBlob.Properties.LastModified;
var created = blockBlob.Properties.Created;
var line = $"{blockBlob.Name},{created},{time}";
await w.WriteLineAsync(line);
await w.FlushAsync();
}
}
}
}
catch (Exception e)
{
// Block of code to handle errors
Console.WriteLine("Error", e);
}
}
}
private static async Task<IEnumerable<CloudBlobContainer>> ListContainersAsync(CloudBlobClient cloudBlobClient)
{
BlobContinuationToken continuationToken = null;
var containers = new List<CloudBlobContainer>();
do
{
ContainerResultSegment response = await cloudBlobClient.ListContainersSegmentedAsync(continuationToken);
continuationToken = response.ContinuationToken;
containers.AddRange(response.Results);
} while (continuationToken != null);
return containers;
}
}
}
进行实验以解决我的问题,没有运气。我错过了另一种方式吗?有没有这样做的首选方式? 这一定是一个常见问题,对吧?
答案 0 :(得分:0)