小编Ben*_*ter的帖子

清除 ObservableCollection

在 WPF 应用程序中,我有一个 ListView 绑定到我的 ViewModel 上的 ObservableCollection。

在应用程序运行期间,我需要删除并重新加载集合中的所有项目。我永远不需要添加或删除单个项目。

这提示了一个问题,ObservableCollection 是否真的必要,我是否可以将 ListView 绑定到 IEnumerable 并在替换集合时调用 OnPropertyChanged?

由于 ObservableCollection 没有 AddRange 方法,重新加载而不替换集合的唯一方法是单独添加每个项目。由于为每个添加的项目触发 CollectionChanged,这是否可能对性能有任何重大影响?

最后,由于我使用 ICollectionView 来同步当前选定的项目,如果我确实替换了集合,我是否需要再次调用 CollectionViewSource.GetDefaultView?我假设我可以重用现有的 CurrentChanged 处理程序。

谢谢本

wpf observablecollection

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

是否可以覆盖现有.net类型的类型描述符?

或者更具体地说

1)我可以为属性分配类型描述符

2)如果是这样,在运行时获取类型转换器的最佳方法是什么.

基本上我有使用反射填充的配置对象.到目前为止,这仅适用于简单类型(string,int,datetime),但我想支持将逗号分隔列表转换为List.

到目前为止,我已经通过ConvertableList<T>List<T>我的自定义类型转换器派生自定义类型" " 和装饰来实现这一目标.

.net reflection typeconverter

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

在控制器中设置结果后,ActionFilter未触发.OnActionExecuting

我有一个全局操作过滤器,它在OnActionExecuting事件期间设置所有ViewResults的MasterPage.

在我的许多控制器中(每个控制器代表应用程序的一个功能)我需要检查功能是否已启用,如果没有,则返回不同的视图.

这是代码:

    protected override void OnActionExecuting(ActionExecutingContext filterContext) {
        if (!settings.Enabled)
        {
            filterContext.Result = View("NotFound");
        }

        base.OnActionExecuting(filterContext);
    }
Run Code Online (Sandbox Code Playgroud)

问题是,当设置这样的结果时,我的ActionFilter的OnActionExecuted方法不会触发,这意味着我没有应用正确的MasterPage.

我想明白为什么会这样.一个补救措施是将我的ActionFilter逻辑移动到OnResultExecuting(这确实会触发),但我仍然对OnActionExecuted为什么不这样做感到困惑.

非常感谢

c# action-filter asp.net-mvc-3

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

基于C#中的唯一字符串生成短代码

我即将推出新的在线服务测试版.Beta用户将被发送一个唯一的"访问代码",允许他们注册该服务.

我认为我只会根据他们的电子邮件生成代码,而不是存储访问代码列表,因为这本身就是独一无二的.

我最初的想法是将电子邮件与唯一字符串组合,然后Base64对其进行编码.但是,我正在寻找更短的代码,比如长5个数字.

.net c# serial-number

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

天蓝色仿真器使用了哪些服务配置?

我们正在使用Azure工具更新中的新功能,该功能允许我们指定多个配置.像本文一样,我们有一个"本地"配置和一个"云"配置.

但是,由于我无法看到如何指定"默认"配置,哪一个用于模拟器?

azure

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

Mercurial正确的方式返回默认分支

我们在不同的分支机构为我们的应用开发新模块.测试完成后,它们将合并到默认分支中.当我们需要对模块进行更改时,我们重新打开分支,进行更改,测试并最终再次合并到默认分支中.

偶尔在更新模块时,我们会识别核心代码中的错误.我们经常会修复错误,然后将更改提交回默认分支.但是,因为我们在模块分支中,所以我们必须重新打开"默认".

这没有达到预期的效果,因为我们最终得到了2个默认分支.

那么当你在另一个分支中而不丢失变化时,提交"默认"的正确方法是什么?(最好使用TortoiseHg).

下面是TortoiseHg对话框的屏幕截图,我在其中选择"默认"分支,然后是图形.

打开默认分支

mercurial tortoisehg

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

jQuery JSONP回调没有触发

我正在使用jQuery制作跨域AJAX请求,但我的回调函数没有触发(请参阅http://jsfiddle.net/zC8z5/).

function jsonpCallback(response){
    $('#code').text(response.data);
}

$.ajax({
    url: url,
    dataType: 'jsonp',
    error: function(xhr, status, error) {
        alert(error);
    },
    success: function() {
        alert("success");                            
    },
    jsonp: false,
    jsonpCallback: 'jsonpCallback'
});
Run Code Online (Sandbox Code Playgroud)

根据文档:

从jQuery 1.5开始,将jsonp选项设置为false可防止jQuery将"?callback"字符串添加到URL或尝试使用"=?" 转型.在这种情况下,您还应该显式设置jsonpCallback设置.例如,{jsonp:false,jsonpCallback:"callbackName"}

但是,如果我没有指定回调而只是处理成功事件中的数据,那么它就可以工作(参见http://jsfiddle.net/2gBRT/).

$.ajax({
    url: url,
    dataType: 'jsonp',
    error: function(xhr, status, error) {
        alert(error);
    },
    success: function(data) { 
        jsonpCallback(data);
    }
});
Run Code Online (Sandbox Code Playgroud)

我是否误解了如何使用jQuery发出JSONP请求?

jquery

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

具有标识的值对象

在一个应用程序中,我们建模Company为一个实体和Address一个值对象:

public class Company : Entity  {
    public Address PrimaryAddress { get; set; }
    public Address SecondaryAddress { get; set; }
}

public class Address : ValueObject {
    public string ZipCode { get; private set; } // etc.

    public Address(string zipCode) {
        ZipCode = zipCode;
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,Address没有身份并且是不可变的。为了更新PrimaryAddress公司,我用一个新Address对象替换它。

但是,在进一步发现域后,我们发现公司可能拥有可变数量的地址。将它们表示为单独的属性不再可行。所以我们重构了Company

public class Company : Entity  {
    public Address[] AddressBook { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我们现在有一个问题是如何更新公司的Address. 我们现在 …

domain-driven-design

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

ASP.NET WebApi操作筛选器和依赖关系范围

为了在ASP.NET WebApi中刷新对RavenDB的更改,我创建了以下Action Filter:

public class RavenDbUnitOfWorkAttribute : ActionFilterAttribute
{
    public Func<IDocumentSession> SessionFactory { get; set; }

    public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
    {
        var session = SessionFactory.Invoke();

        if (session != null && actionExecutedContext.Exception == null)
        {
            session.SaveChanges();
        }

        base.OnActionExecuted(actionExecutedContext);
    }
}
Run Code Online (Sandbox Code Playgroud)

为了注入,IDocumentSession我创建了一个IFilterProvider循环遍历每个过滤器的自定义,并使用setter注入(StructureMap)设置任何依赖项.

我想知道IFilterProvider作用域的实例.阅读这篇文章,看起来每个请求都会创建控制器.

目前,我正在IDocumentSession使用StructureMap 明确确定每个请求的范围.问题是,如果我依赖IDependencyScope(使用嵌套容器)将相同的实例IDocumentSession注入我的Action Filter?

[更新]

进一步测试似乎Action Filters不使用与Controller相同的依赖范围.我宁愿不在控制器中使用代码来刷新会话.

structuremap ravendb asp.net-web-api

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

将不同大小的文本与列表元素的底部对齐

鉴于以下标记:

<ul>
    <li><span>One</span></li>
    <li><span>Two</span></li>
    <li><span>Three</span></li>
    <li><span>Four</span></li>
    <li><span>Five</span></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

以下CSS:

body {
 font-family: Arial, sans-serif;
 font-size: 14px;
}

ul {
 list-style-type: none;
 padding: 0;
 margin: 0;   
}

li {
 border-bottom: 1px solid red;      
 float: left;
 margin-left: 10px;
 height: 70px; /* height of largest element */
}

span {
 font-weight: bold;
 display: block; /* important, needs to be block */
}

li:nth-child(2) {
 font-size: 2em;   
}

li:nth-child(3) {
 font-size: 3em;   
}

li:nth-child(4) {
 font-size: 4em;   
}

li:nth-child(5) {
 font-size: 5em;   
}
Run Code Online (Sandbox Code Playgroud)

每个列表项包含不同大小的文本. …

html css

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