小编Ash*_*ley的帖子

C# - 引用动态生成的程序集中的类型

我试图弄清楚当你动态生成程序集时,是否有可能引用先前动态生成的程序集中的类型.

例如:

using System;
using System.CodeDom.Compiler;
using System.Reflection;
using Microsoft.CSharp;

CodeDomProvider provider = new CSharpCodeProvider();
CompilerParameters parameters = new CompilerParameters();

parameters.GenerateInMemory = true;

CompilerResults results = provider.CompileAssemblyFromSource(parameters, @"
namespace Dynamic
{
    public class A
    {
    }
}
");

Assembly assem = results.CompiledAssembly;

CodeDomProvider provider2 = new CSharpCodeProvider();
CompilerParameters parameters2 = new CompilerParameters();

parameters2.ReferencedAssemblies.Add(assem.FullName);
parameters2.GenerateInMemory = true;

CompilerResults results2 = provider2.CompileAssemblyFromSource(parameters2, @"
namespace Dynamic
{
    public class B : A
    {
    }
}
");

if (results2.Errors.HasErrors)
{
    foreach (CompilerError error in …
Run Code Online (Sandbox Code Playgroud)

c# assemblies reference dynamic

16
推荐指数
1
解决办法
7546
查看次数

WPF - 延迟多重绑定

我有一个看起来像这样的多绑定:

<UserControl.Visibility>
    <MultiBinding Converter="{StaticResource isMouseOverToVisibiltyConverter}">
        <Binding ElementName="otherElement" Path="IsMouseOver" />
        <Binding RelativeSource="{RelativeSource Self}" Path="IsMouseOver" />
    </MultiBinding>
</UserControl.Visibility>
Run Code Online (Sandbox Code Playgroud)

而且,我希望能够在两个绑定的IsMouseOver之间添加一个延迟,并将Visibility设置为Collapsed.

我找到了这个DelayBinding实现:http: //www.paulstovell.com/wpf-delaybinding

但是,这对MultiBinding不起作用,而且我一直无法弄清楚如何使用MultiBinding.

我可以选择在代码隐藏中的事件中对Visibility进行更改,这样可以工作,但是如果通过绑定系统有某种方法可以做到这一点会很好.

有没有办法为MultiBinding添加延迟?

编辑:雷,为了让你的类编译和运行,我不得不做一些修复.但是,由于更新没有传播,因此仍然存在问题.它似乎只更新一次目标属性.

[ContentProperty("Bindings")]
public class DelayedMultiBindingExtension : MarkupExtension, IMultiValueConverter, INotifyPropertyChanged
{
    public Collection<BindingBase> Bindings { get; private set; }
    public IMultiValueConverter Converter { get; set; }
    public object ConverterParameter { get; set; }
    public CultureInfo ConverterCulture { get; set; }
    public BindingMode Mode { get; set; }
    public UpdateSourceTrigger UpdateSourceTrigger { get; set; }

    public object CurrentValue …
Run Code Online (Sandbox Code Playgroud)

wpf multibinding

7
推荐指数
1
解决办法
2871
查看次数

使用async/await,什么时候继续发生?

我试图在一个非常大的已经存在的同步代码库中使用async/await.在这个代码库中有一些全局状态,如果是kludgy,在同步上下文中工作正常,但它在async/await的异步上下文中不起作用.

所以,我的两个选择似乎是要么分解全局上下文,这可能是一个非常大而且非常耗时的任务,或者在继续运行时做一些聪明的事情.

为了更好地理解async/await和continuations,我做了一个测试程序,如图所示.这里显示.

    // A method to simulate an Async read of the database.
    private static Task ReadAsync()
    {
        return Task.Factory.StartNew(() =>
        {
            int max = int.MaxValue / 2;
            for (int i = 0; i < max; ++i)
            {
            }
        });
    }

    // An async method that creates several continuations.
    private static async Task ProcessMany(int i)
    {
        Console.WriteLine(string.Format("{0} {1}", i.ToString(), 0));

        await ReadAsync();

        Console.WriteLine(string.Format("{0} {1}", i.ToString(), 1));

        await ReadAsync();

        Console.WriteLine(string.Format("{0} {1}", i.ToString(), 2));

        await ReadAsync();

        Console.WriteLine(string.Format("{0} {1}", i.ToString(), 3));
    } …
Run Code Online (Sandbox Code Playgroud)

c# continuations async-await

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