小编Ben*_*ter的帖子

如何从服务器调用SignalR集线器操作

SignalR维基介绍了如何在广播从中心外的枢纽.但是,这会调用客户端操作:

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.Group(group).addMessage(message);
Run Code Online (Sandbox Code Playgroud)

有没有办法调用Hub操作,理想情况是以强类型方式?例如

GetHubContext<MyHub>().Invoke(h => h.Say(message))
Run Code Online (Sandbox Code Playgroud)

我知道这可以通过使用.NET客户端连接到集线器,但是当调用代码与集线器在同一服务器上时,这似乎是错误的.

signalr

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

自定义ConfigurationSection默认布尔值

我创建了一个具有以下属性的自定义配置部分:

private const string UseMediaServerKey = "useMediaServer";
[ConfigurationProperty(UseMediaServerKey, IsRequired = false, DefaultValue = false)]
public bool UseMediaServer
{
    get { return bool.Parse(this[UseMediaServerKey] as string); }
    set { this[UseMediaServerKey] = value; }
}
Run Code Online (Sandbox Code Playgroud)

我的理解是,如果未在配置文件中定义属性,DefaultValue则应返回该属性.

但是,在上述情况下ArgumentNullException,抛出的bool.Parse(...)意思是即使未定义配置属性,也会执行默认访问器.

当然我可以将属性访问器更改为:

    private const string UseMediaServerKey = "useMediaServer";
    [ConfigurationProperty(UseMediaServerKey, IsRequired = false)]
    public bool UseMediaServer
    {
        get {
            bool result;
            if (bool.TryParse(this[UseMediaServerKey] as string, out result))
            {
                return result;
            }

            return false;
        }
        set { this[UseMediaServerKey] = value; }
    }
Run Code Online (Sandbox Code Playgroud)

但那么,该 …

.net c#

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

应用于所有元素的验证规则

我需要通过idnot将验证规则分配给特定的输入元素name

为此,我执行以下代码:

   $("#cvc").rules("add", { required: true, validateCvc: true });
   $("#cardNumber").rules("add", 
     { creditcard: true, messages: { creditcard: "Invalid Card Number" } });
Run Code Online (Sandbox Code Playgroud)

然而,这实际上是将规则分配给表单上的所有输入。我可以通过记录附加到不同输入的规则来验证这一点:

   console.log($("#name").rules());
Run Code Online (Sandbox Code Playgroud)

输出:

Object {required: true, validateCvc: true, creditcard: true} 
Run Code Online (Sandbox Code Playgroud)

更新

看起来这可能与 jQuery Validate Unobtrusive 插件有关,我开始发现它比它的价值更麻烦。validate在添加规则之前调用设置验证的代码:

function validationInfo(form) {
    var $form = $(form),
        result = $form.data(data_validation),
        onResetProxy = $.proxy(onReset, form);

    if (!result) {
        result = {
            options: {  // options structure passed to jQuery Validate's validate() method
                errorClass: "input-validation-error",
                errorElement: "span",
                errorPlacement: $.proxy(onError, …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate unobtrusive-validation

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

正则表达式可选后缀

我使用以下正则表达式来验证 CSS 大小:

([0-9]*\.?[0-9]+)(em|px|%)
Run Code Online (Sandbox Code Playgroud)

因此,以下尺寸是有效的:

  • 10像素
  • 10.2像素
  • 1.5em
  • 100%

如何更改正则表达式以使单位 (em|px|%) 可选以仅允许数字?

regex

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

创建具有不同基础类型的Nullable对象数组?

我有许多不同类型的(例如可空对象DateTime?Guid?),我要检查的值。

我想避免这样的代码:

return SomeGuid.HasValue || SomeBool.HasValue || SomeDateTime.HasValue
Run Code Online (Sandbox Code Playgroud)

但似乎无法创建的数组Nullable<object>。我希望做这样的事情:

return new Nullable<object>[] { SomeGuid, SomeBool, SomeDateTime }.Any(o => o.HasValue);
Run Code Online (Sandbox Code Playgroud)

c#

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

如何将对象转换为Action <T>

我创建了一个简单的消息总线,用于排队和发布/发布事件.

我正在使用StructureMap来定位Action<T>事件的已注册处理程序(),但我不确定如何将它从StructureMap返回的对象中转换为可调用的操作.

既然我不能Action<object>说我假设Action<T>不是协变的?这可以换一种方式吗?

public class Bus
{
    private ConcurrentQueue<object> events = new ConcurrentQueue<object>();
    public void Queue<TEvent>(TEvent e)
    {
        events.Enqueue(e);
    }

    public void Emit()
    {
        object e;
        while (events.TryDequeue(out e))
        {
            var handlerType = typeof(Action<>).MakeGenericType(e.GetType());
            foreach (var handler in ObjectFactory.GetAllInstances(handlerType))
            {
                // how to invoke action?
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# generics

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

ASP.NET MVC使用App_Code目录

我已经将一个App_Code目录添加到我的ASP.NET MVC项目中,以便我获得插件的动态编译.

只有轻微的烦恼是,在开发新的插件时,我不会在App_Code目录中的类上获得智能感知.

目前我在项目中的另一个目录中创建它们,然后将它们复制到App_Code中.

有没有办法解决?

[更新]

我在下面贴了一个"答案".从技术上讲,这是基于我自己的规范回答问题,不需要使用工具(即智能感知)来创建插件.但是,这确实提出了一个问题,即如何在不使用App_Code的情况下实现动态编译的插件框架.由于这个问题与原版有很大的不同,我会单独提出.

asp.net-mvc app-code

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

迭代ConcurrentQueue <T>

这是一种安全的迭代方式ConcurrentQueue<T>吗?

while (cq.GetEnumerator().MoveNext())
{
    IIndexTask task;
    if (cq.TryDequeue(out task))
        task.Execute(service);
}
Run Code Online (Sandbox Code Playgroud)

collections .net-4.0 thread-safety

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

如何在EF CTP5中映射属性

在CTP 4中,我们可以选择我们想要映射的属性,如下所示:

    this.MapSingleType(i => new
{
    i.Id,
    i.OriginalFileName,
    i.Extension,
    i.MimeType,
    i.Width,
    i.Height,
    i.ImageStoreLocationId,
    i.AlternateText,
    i.ImageData
});
Run Code Online (Sandbox Code Playgroud)

我们如何在CTP5中实现这一目标?

我尝试使用以下Map配置,但这似乎不起作用,因为我仍然必须显式忽略(this.Ignore(..))我不想映射的属性:

    Map(config =>
{
    config.Properties(i => new
    {
        i.OriginalFileName,
        i.Extension,
        i.MimeType,
        i.Width,
        i.Height,
        i.ImageStoreLocationId,
        i.AlternateText,
        i.ImageData
    });

    config.ToTable("Images");
});
Run Code Online (Sandbox Code Playgroud)

考虑到新的API应该更流畅,我必须编写更多代码才能实现同样的功能.

谢谢Ben

entity-framework-4 entity-framework-ctp5

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

StructureMap处理容器

在我的应用程序中,每个租户都有自己的StructureMap容器​​.

在运行时,可以关闭或重新启动租户实例.我应该做什么整理(比如调用IContainer.Dispose)或者我应该让Garbage Collection做它的工作吗?

我们确实有许多实现IDisposable的单例实例.理想情况下,我们应该在处理容器之前调用Dispose.我知道这是在嵌套容器上自动完成的,但不确定标准容器?

谢谢,

structuremap

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