我想要做的是确保如果对我的观察者的唯一引用是可观察的,它会被垃圾收集并停止接收消息.
假设我有一个带有列表框的控件,名为Messages,后面是这个代码:
//Short lived display of messages (only while the user's viewing incoming messages)
public partial class MessageDisplay : UserControl
{
public MessageDisplay()
{
InitializeComponent();
MySource.IncomingMessages.Subscribe(m => Messages.Items.Add(m));
}
}
Run Code Online (Sandbox Code Playgroud)
哪个连接到此来源:
//Long lived location for message store
static class MySource
{
public readonly static IObservable<string> IncomingMessages = new ReplaySubject<string>;
}
Run Code Online (Sandbox Code Playgroud)
我不想要的是让消息显示器在不再可见后很长时间内保存在内存中.理想情况下,我想要一点延伸,所以我可以写:
MySource.IncomingMessages.ToWeakObservable().Subscribe(m => Messages.Items.Add(m));
Run Code Online (Sandbox Code Playgroud)
我也不想依赖MessageDisplay是一个用户控件的事实,因为我稍后想要使用MessageDisplayViewModel进行MVVM设置,这不是用户控件.
我正在尝试将DataTables.js(http://datatables.net)与使用twitter bootstrap库的应用程序集成.似乎DataTable与twitter bootstrap不兼容.我不确定它的css或js是否有冲突.
如何将DataTables.js与Twitter Bootstrap集成?是否还有其他数据表库可以与Twitter Bootstrap一起使用?
如果视图模型引用非托管资源或者在调度程序计时器上有事件处理程序(例如处理已经过时),我该如何确保正确处理视图模型.在第一种情况下,终结者是一种选择,虽然不是理想的,但在后者中,它永远不会被称为.如何在视图模型上不再附加视图时如何判断.
我正在C#中编写一个包含大量SQL查询的新项目.有些相对较大且复杂.我想知道存储它们的最佳方法是什么.理想情况下,我会在数据库上创建存储过程,但许多其他应用程序使用该数据库,因此如果我可以在我的应用程序中保留特定于我的应用程序的过程,那就更好了.
选项似乎是:
const string query ="Select * From MyTable"
)
QueryName.sql
另外一个想法是,有没有办法从SQL查询中轻松生成强类型类定义?
我目前正在考虑创建一个部署到azure云的应用程序.考虑Azure优于亚马逊的主要原因是访问控制服务.我希望为我的应用程序接受尽可能多的不同凭据类型,尤其是Facebook.
一些用户将使用基于HTML的应用程序,其他用户将使用WPF客户端应用程序.问题是,如何使用他们想要的任何提供程序对客户端进行身份验证,然后与WCF服务进行通信.我猜我需要在我的应用程序中使用Web浏览器组件,或弹出一个外部浏览器(理想情况下支持偏执用户的两个选项),但我不清楚如何将该连接用于WCF服务.
我想创建一个通用的方法来将类serizlize到文本(用作网络组件的一部分)该方法应该类似于:
public string SerializeToText<T>(T DataToSerialize);
Run Code Online (Sandbox Code Playgroud)
方法内容只是执行xml序列化,我可以这样做.我想知道的是,我是否可以检查T是否可以序列化:最好是在编译时,但在运行时失败.
我使用.net 4.0在Visual Studio 2010中创建了一个WPF项目
我已经创建了一个具有许多不同大小和格式的图标,从16x16 4位BMP到256x256 24位BMP.我将它设置为应用程序属性页中的程序图标,并作为WPF窗口中图标的窗口图标.
这很有用.图标显示在所有预期位置,但是,似乎总是使用较低分辨率图像之一.在任务栏中,它似乎使用16x16图像.在文件夹中,如果您查看exe文件并将其设置为超大图标,则它会显示为一个小图像,周围有很多白色空间,而不是选择大图标.即使我将其设置为256x256图标作为唯一的图标,它似乎将其缩小,然后将其放在中间,周围有很多空白区域.
我有一个IObservable; 其中属性更改具有实体ID和PropertyName.我想用它来更新数据库,但是如果多个属性几乎同时发生变化,我只想对同一个实体的所有属性进行一次更新.
如果这是一个静态IEnumerable并且我使用LINQ我可以简单地使用:
MyList.GroupBy(C=>C.EntityID);
Run Code Online (Sandbox Code Playgroud)
但是,列表永远不会终止(从不调用IObserver.OnComplete).我想要做的是等待一段时间,比如1秒钟,将所有呼叫分组适当的一秒钟.
理想情况下,我会为每个EntityID设置单独的计数器,只要找到该EntityID的新属性更改,它们就会重置.
我不能使用像Throttle这样的东西,因为我想处理所有的属性更改,我只是想一次性处理它们.
我想将控件的DataContext作为IObservable.我试过这个:
Observable.FromEvent<DependencyPropertyChangedEventHandler,
DependencyPropertyChangedEventArgs>
(a => this.DataContextChanged += a, a => this.DataContextChanged -= a)
.Subscribe(e => MessageBox.Show(e.NewValue.ToString()));
Run Code Online (Sandbox Code Playgroud)
哪个编译很好,但在调用Subscribe时它会抛出异常:绑定到目标方法的错误.
我的猜测是因为DependencyPropertyChangedEventArgs不会从事件args继承,但我不确定.任何关于正确方法的建议都是合理的.
我需要一种方法来列出data-*
元素的属性.我会用,Object.keys(element.dataset)
但IE 9.0没有dataset
支持.我应该如何以适用于IE 9.0(以及Chrome,Firefox,Safari)的方式执行此操作?
我有以下验证证书的 php 函数:
<?php
function raven_check_sig($data, $sig) {
$key_path = '/path/to/pubkey.crt';
$key_crt = file_get_contents($key_path);
$key = openssl_get_publickey($key_crt);
$result = openssl_verify($data, base64_decode($sig), $key);
openssl_free_key($key);
if ($result == 1) {
return TRUE;
} else {
return FALSE;
}
}
Run Code Online (Sandbox Code Playgroud)
我正在将我的应用程序移植到node.js,但我不知道如何实现这个功能。
我努力了:
function checkSignature(data, sig, kid) {
var keyPath = '/path/to/pubkey.crt';
var key = fs.readFileSync(keyPath);
var verifier = crypto.createVerify('RSA-SHA256');
verifier.update(data);
var res = verifier.verify(key, sig, 'base64');
if (res) {
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但这似乎总是会回来false
。我认为有两个问题可能导致此失败:
RSA-SHA256 …