小编Mil*_*ski的帖子

"动态加载可移植类库时无法加载文件或程序集'System.Core,Version = 2.0.5.0,..."异常

首先,我要强调,这是稍微比一个不同的问题,这个线程.此外,安装KB2468871没有帮助.

我试图尽可能地简化这个问题.一般来说,它是关于使用Assembly.LoadFile(...)在Desktop应用程序中加载PCL程序集.

假设有一个.NET 4.0控制台应用程序(称为"C").它引用了.NET 4.0程序集(称为"N4")和PCL程序集(称为"PCL").

N4看起来像这样:

using System.Linq;

namespace N4
{
    public class ClassInN4
    {
        public static string Greet()
        {
            return new string(
                "hello from N4"
                .ToCharArray()
                .Select(char.ToUpper)
                .ToArray()
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

PCL看起来像这样:

using System.Linq;

namespace PCL
{
    public class ClassInPCL
    {
        public static string Greet()
        {
            return new string(
                "hello from pcl"
                .ToCharArray()
                .Select(char.ToUpper)
                .ToArray()
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和C看起来像这样:

using System;
using System.IO;
using System.Reflection;
using N4;
using PCL;

namespace C
{
    internal …
Run Code Online (Sandbox Code Playgroud)

.net c# reflection .net-assembly

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

绑定附属物

我正在尝试将Button的ContentTemplate绑定到附加属性.我读了所有问题的答案,类似于"绑定到附属物",但我没有解决问题的运气.

请注意,此处提供的示例是我的问题的一个愚蠢版本,以避免混乱业务代码的问题.

所以,我确实有附加属性的静态类:

using System.Windows;

namespace AttachedPropertyTest
{
  public static class Extender
  {
    public static readonly DependencyProperty AttachedTextProperty = 
      DependencyProperty.RegisterAttached(
        "AttachedText",
        typeof(string),
        typeof(DependencyObject),
        new PropertyMetadata(string.Empty));

    public static void SetAttachedText(DependencyObject obj, string value)
    {
      obj.SetValue(AttachedTextProperty, value);
    }

    public static string GetAttachedText(DependencyObject obj)
    {
      return (string)obj.GetValue(AttachedTextProperty);
    }

  }
}
Run Code Online (Sandbox Code Playgroud)

和一个窗口:

<Window x:Class="AttachedPropertyTest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:AttachedPropertyTest"
        Title="MainWindow" Height="350" Width="525">
  <Grid>
    <Button local:Extender.AttachedText="Attached">
      <TextBlock 
        Text="{Binding 
          RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=Button},
          Path=(local:Extender.AttachedText)}"/>
    </Button>
  </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

这就是它.我希望在按钮中间看到"附加".相反它崩溃:属性路径无效.'Extender'没有名为'AttachedText'的公共属性.

我对SetAttachedText和GetAttachedText设置断点,SetAttachedText 执行,因此将其连接到按钮的作品.GetAttachedText永远不会被执行,所以它在解析时找不到属性.

我的问题实际上更复杂(我试图从App.xaml中的Style内部进行绑定)但是让我们从简单的开始.

我错过了什么?谢谢,

c# wpf attached-properties

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

使用SHA-1哈希作为AES密钥

假设我想将"password-derived-bytes"作为AES密钥.例如,我有一个密码"topsecret",我确实为它计算了SHA-1哈希值(160位),我想将这些字节作为AES-128的密钥.

我应该在128位之后截断还是做某种折叠?AES-256怎么样?我应该重复字节,填0或做一些"展开"操作?

我知道在后一种情况下,安全性保持在160位,因为256位密码池减少到2 ^ 160种可能的组合,但我只是想克服技术限制(没有AES-160).

什么理论说?(不,使用MD5进行128位,使用SHA-256进行256位长哈希不是一种选择)

language-agnostic encryption hash cryptography

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

反应性扩展:Zip运算符但不同

这不是现实生活中的例子(这段代码可能无法编译),但我试图让它比我实际拥有的问题简单一些.

假设我有图像集:

private void IEnumerable<Image> GetImages()
{
    foreach (var filename in GetFilenames())
    {
         yield return Image.LoadFile(filename);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想显示用户按'空格'驱动的幻灯片:

var images = Observable.FromEvent(form, "KeyPress")
  .Where(e => e.KeyCode == KeyCode.Space)
  .Zip(GetImages.ToObservable(), (k, i) => i);
Run Code Online (Sandbox Code Playgroud)

而这种作品.当按下空间时,它会发出下一个图像.问题是它实际上是以全速加载它们,因此它们被缓冲并消耗大量内存(加载时的处理能力).我可以将过滤后的按键输入到GetImages中并在那里进行压缩,但我不会保留GetImages的纯度.

有没有办法防止枚举.ToObservable()如果不需要提前枚举?

另一个例子(这个将编译):

var observable = 
    Observable.Interval(TimeSpan.FromSeconds(1))
    .Zip(
        Observable.Range(0, 1000000).Do(x => Console.WriteLine("produced {0}", x)), 
        (_, v) => v
    );

var subscription = observable.Subscribe(x => Console.WriteLine("consumed {0}", x));

Console.WriteLine("Press <enter>...");
Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

它将产生大量"生产"(提前),但每秒仅消耗一个"消耗".

c# system.reactive

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