小编nic*_*dev的帖子

在Roslyn程序集中获取匿名类型的通用参数类型

假设您有下一个代码:

        var house = new {Color = "White", Area = 150};
        var typeHouse = house.GetType();
        var argumentTypes = typeHouse.GetGenericArguments();
Run Code Online (Sandbox Code Playgroud)

argumentTypes阵列有两种类型:字符串和INT ......这是确定:)

但是,如果我有使用Roslyn编译器的下一个代码:

            var tree = SyntaxTree.ParseText(@"
            namespace TestRoslyn {
                public class MyClass {
                    public void GetHouse(){
                        var house = new {Color = 'W', Area = 150};
                    }
                }
            }");

        byte[] assembly;
        var compiler = Compilation.Create("Test", new CompilationOptions(outputKind: OutputKind.DynamicallyLinkedLibrary,
                                                                 usings: new[] { "System" }))
            .AddSyntaxTrees(tree)
            .AddReferences(new MetadataFileReference(typeof(object).Assembly.Location));

        using (var stream = new MemoryStream())
        {
            var result = compiler.Emit(stream);
            if …
Run Code Online (Sandbox Code Playgroud)

c# generics anonymous-types roslyn

3
推荐指数
1
解决办法
1280
查看次数

F# 继续 Async.Catch

我正在执行许多异步 Web 请求并使用 Async.Parallel。就像是:

xs                          
|> Seq.map (fun u -> downloadAsync u.Url)
|> Async.Parallel
|> Async.Catch
Run Code Online (Sandbox Code Playgroud)

某些请求可能会抛出异常,我想记录它们并继续处理其余的 url。我找到了Async.Catch函数,但这会在抛出第一个异常时停止计算。我知道我可以try...with在异步表达式中使用一个表达式来计算整个列表,但是,我认为,这意味着将日志函数传递给我的downloadAsync函数来改变他的类型。有没有其他方法可以捕获异常,记录它们并继续处理其余的 url?

f# f#-async

2
推荐指数
1
解决办法
787
查看次数

标签 统计

anonymous-types ×1

c# ×1

f# ×1

f#-async ×1

generics ×1

roslyn ×1