小编Kas*_*sem的帖子

通过扩展方法进行多态性?

我有一个类库,其中包含一些基类和从中派生的其他基类.在这个类库中,我正在利用多态来做我想做的事情.现在在一个消费应用程序中,我想根据子类的运行时类型更改某些代码的行为.假设如下:

public class Base { }
public class Child1 : Base { }
public class Child2 : Base { }
Run Code Online (Sandbox Code Playgroud)

现在在消费应用程序中,我想做一些如下操作(请注意,以下所有类都在使用应用程序中,并且无法在类库中引用):

public interface IMyInterface1 { }
public interface IMyInterface2 { }
public static class Extensions
{
    public static void DoSomething(this Base myObj, Object dependency)
    {

    }

    public static void DoSomething(this Child1 myObj, Object dependency)
    {
        IMyInterface1 myInterface = dependency as IMyInterface1;
        if (myInterface != null)
        {
            //Do some Child1 specific logic here
        }
    }

    public static void DoSomething(this Child2 myObj, …
Run Code Online (Sandbox Code Playgroud)

.net c# polymorphism extension-methods

11
推荐指数
2
解决办法
2370
查看次数

自定义控制器工厂的问题

我最近将Microsoft Unity添加到我的MVC3项目中,现在我收到此错误:

无法找到路径'/favicon.ico'的控制器,或者它没有实现IController.

我真的没有favicon.ico,所以我不知道它来自哪里.而最奇怪的是视图实际上正在呈现,然后这个错误被抛出......我不确定我的控制器工厂类是否有问题,因为我从一些教程得到了代码(我不是IoC - 这是我第一次这样做).这是代码:

public class UnityControllerFactory:DefaultControllerFactory {IUnityContainer container;

public UnityControllerFactory(IUnityContainer _container)
{
    container = _container;
}

protected override IController GetControllerInstance(System.Web.Routing.RequestContext requestContext, Type controllerType)
{
    IController controller;

    if(controllerType == null)
        throw new HttpException(404, string.Format("The controller for path '{0}' could not be found or it does not implement IController.",
            requestContext.HttpContext.Request.Path));

    if(!typeof(IController).IsAssignableFrom(controllerType))
        throw new ArgumentException(string.Format("Type requested is not a controller: {0}",
                                                            controllerType.Name),
                                                            "controllerType");
    try
    {
        controller = container.Resolve(controllerType) as IController;
    }
    catch (Exception ex)
    {
        throw new InvalidOperationException(String.Format(
                                "Error resolving …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-3

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

在jQuery中通过索引获取字典的键值

我有一个javascript字典对象,它有一个默认的预设键0.然后我需要通过索引遍历这个字典的元素,并使用键的值来设置它的值.以下是我的代码,使事情更容易理解:

var _map = {
    'severity-normal': 0,
    'severity-minimal': 0,
    'severity-moderate': 0,
    'severity-severe': 0,
    'severity-highly-severe': 0
};

    mapSeverities: function () {
        for (var i = 0; i < _map.length; i++) {
            //get the key value, ex: severity-normal, by index (which would by i)
            var key = //retrieved key value
            _map[key] = this.data(key);
        }
    }
Run Code Online (Sandbox Code Playgroud)

换句话说,假设我们正在处理的C#,我想获得KeyValuePair在一定的指数,然后访问它KeyValue属性.

有什么建议?

javascript jquery dictionary javascript-objects

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

DotLess IntelliSense在Visual Studio 2010中

我最近发现了DotLess库,我对此感到非常兴奋,因为CSS一直让我讨厌.我觉得这个库使用起来非常方便.不幸的是,一旦我尝试了,我发现VS 2010不为具有.less扩展名的文件提供IntelliSense.这实际上让我感到沮丧,我决定不使用DotLess,直到VS 2010有一天提供IntelliSense.

Jon Galloway的视频MVC开发人员应该知道什么关于HTML和CSS谈论HTML/CSS以及包括DotLess在内的一些方便提示,他提到了Phil Haack的T4模板,它允许我使用.less.css扩展,然后它要生成正确的CSS文件的东西.

我去了菲尔的博客,找到了他谈论T4模板帖子.没有与T4模板的直接链接,并且链接在他的博客文章中已经死了,这篇文章相对过时(2009年).

有没有人有这个问题的解决方案?我真的想使用DotLess库,但我不想丢失IntelliSense.

.net t4 visual-studio-2010 dotless

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

实体框架代码首先使用Fluent API映射外键

我的情况是用户可以拥有多个地址.因此,我的用户类上有一个ICollection.但我也希望用户能够选择默认地址.所以我做了以下事情:

public class User 
{
    public int Id { get; set; }
    public int? DefaultAddressId { get; set; }
    [ForeignKey("DefaultAddressId")]
    public virtual Address DefaultAddress { get; set; }
    public virtual ICollection<Address> Addresses { get; set; }
    //properties were removed for purpose of this post
}
Run Code Online (Sandbox Code Playgroud)

我想public virtual Address DefaultAddress { get; set; }完全删除,保留DefaultAddressId并使用Fluent API映射它,因为当前的设置导致了很多麻烦(在这个和其他我有类似设置的类中).那么可以使用流畅的api来完成吗?

更新: 地址类当前没有对User类的任何引用,它是一个单向关系.但是,是的,一个地址只属于一个用户,它不是一个多对多的关系.这是地址类:

public class Address
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Details { …
Run Code Online (Sandbox Code Playgroud)

entity-framework fluent-interface ef-code-first entity-framework-4.1

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

从客户端(&)检测到潜在危险的Request.Path值

我理解为什么会这样,但我需要一个解决方法.我在StackOverflow上查看了一些其他问题,但没有一个是有用的.我不想在整个网站上禁用输入验证,因为这绝对是危险的.我只有一个(至少现在)我需要禁用输入验证的地方.

我用[ValidateInput(false)]属性修饰了Action方法,我用Html.Encode对字符串进行编码.但是,我仍然得到同样的错误.这是我的观点:

<div id="sharwe-categories">
    <ul class="menu menu-vertical menu-accordion">
        @foreach(var topLevel in Model)
        {
            var topLevelName = Html.Encode(topLevel.Name);
             <li class="topLevel">
                <h3>  
                    @Html.ActionLink(topLevel.Name, "Index", "Item", new { category = topLevelName }, new {@class = "main"} )
                    <a href="#" class="drop-down"></a>
                </h3>
                <ul>
                    @foreach (var childCategory in topLevel.Children)
                    {
                        var childcategoryName = Html.Encode(childCategory.Name);
                        <li>@Html.ActionLink(childCategory.Name, "Index", "Item", new RouteValueDictionary { { "category", topLevelName }, { "subcategory", childcategoryName } }, null)</li>
                    }
                </ul>
            </li>
        }

    </ul>

</div>
Run Code Online (Sandbox Code Playgroud)

如您所见,没有用户输入.但是一些类别名称中有一些"危险"字符......任何解决方案?

security validation razor asp.net-mvc-3

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

有条件地将"multiple"属性添加到ui-select

我正在尝试使用该指令基于某个属性的值将该multiple属性添加到指令中.不幸的是,那不适合我.我已经设置了一个示例来展示正在发生的事情.ui-selectng-attr-

Plunker示例

javascript angularjs angularjs-directive ui-select

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

使用jQuery获取具有属性最大值的数组中的元素

我有一个自定义JavaScript对象的数组,它有一个名为的属性order.我有一个这个对象的数组,我想得到具有最高"顺序"的项目.

由于我对jQuery相对较新,并且来自C#背景,这是我非常欣赏LINQ的实例之一:)

无论如何,长话短说,我已经检查了以下链接,但他们只返回值而不是数组元素本身的引用...所以有一点帮助改变它返回元素将不胜感激.

来自元素数组的jQuery min/max属性

具有来自一组元素的最大高度的元素

有问题的自定义对象(我有一个数组)如下:

var severity = function (key, value, order) {
    this.key = key;
    this.value = value;
    this.order = order;
};
Run Code Online (Sandbox Code Playgroud)

javascript arrays jquery minmax

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

从HTTPS页面到HTTP URL的AJAX请求

我有一个案例,我需要从HTTPS页面执行AJAX请求到不安全的另一个(在不同的域上).我们已经实施了CORS策略,在我们的网站上使用HTTPS之前它工作正常.有没有办法让这项工作?

javascript ajax https http cors

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

ObjectContext实例已被释放,不能再用于需要连接的操作

由于EF的更改跟踪和延迟加载功能,我在查询中遇到问题.问题是,在我得到查询结果之后,我使用AutoMapper将域对象映射到我的业务模型中,但由于已经处理了上下文,它不断抛出异常.

ObjectContext实例已被释放,不能再用于需要连接的操作.

当我在调试器中查看结果集合时,我看到它是一个列表,DynamicProxy而不是实际的实体.我试图停止更改跟踪,但这没有帮助.这是我的代码:

    public List<ContentTypeColumn> GetContentTypeColumns(Int64 contentTypeId)
    {
        List<ContentTypeColumn> result = new List<ContentTypeColumn>();
        using (SCGREDbContext context = new SCGREDbContext())
        {                
            ContentType contentType = context.ContentTypes.Include("Parent").AsNoTracking().FirstOrDefault(x => x.Id.Equals(contentTypeId));

            result.AddRange(contentType.ContentTypeColumns.ToList());
            while (contentType.Parent != null)
            {
                result.AddRange(contentType.Parent.ContentTypeColumns.ToList());
                contentType = contentType.Parent;
            }    
        }
        return result.ToList();
    }
Run Code Online (Sandbox Code Playgroud)

注意:如果您需要查看此操作中涉及的域模型,可以参考此问题.

entity-framework lazy-loading change-tracking objectcontext entity-framework-5

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