小编The*_*dge的帖子

检查实例是否为null的扩展方法

要检查对象是否为null,您可以执行以下任一操作:

var myObject = DoSomeCallThatMayReturnNull();
var myString = string.Empty;
Run Code Online (Sandbox Code Playgroud)

.

if (myObject == null)
  myString = "null";
Run Code Online (Sandbox Code Playgroud)

- 要么 -

if (Object.ReferenceEquals(null, myObject)) 
   myString = "null";
Run Code Online (Sandbox Code Playgroud)

在某些情况下使用null coallescing运算符??.然而,我想要添加一个IsNull的扩展方法,以便我可以执行以下操作:

if (myObject.IsNull())
Run Code Online (Sandbox Code Playgroud)

对于像int这样的可空类型?也能做到:

if (myInt.IsNull())
Run Code Online (Sandbox Code Playgroud)

我天真的实施是:

public static bool IsNull(this Object aObject)
{
    return aObject == null;
}
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

c#

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

Automapper 不支持将 int16 映射到枚举

  • 自动映射器 4.1.1

源对象:

public class Platform_ContentTemplatesModel : OzEfEntity, IEntity<int>
{
    public string TemplateContent { get; set; } 
    public int TemplateIdentifier { get; set; } 
    public short WebsitePropertyId { get; set; }
    public int Id { get; set; } 
}
Run Code Online (Sandbox Code Playgroud)

目标对象:

public class OzCpPlatformContentTemplateItemRecord
{
    public int Id { get; set; }
    public string TemplateContent { get; set; }
    public ContentTemplateIdentifierEnum TemplateIdentifier { get; set; }
    public WebsitePropertyEnum WebsiteProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

映射配置:

Mapper.CreateMap<Platform_ContentTemplatesModel, OzCpPlatformContentTemplateItemRecord>()
                .ForMember(dest => dest.WebsiteProperty, opt …
Run Code Online (Sandbox Code Playgroud)

c# automapper

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

Visual Studio / ReSharper 中显示换行的设置在哪里?

我刚刚使用 ReSharper 设置了新的 Visual Studio 2015 环境。在我的旧系统上,IDE 代码编辑器窗口中,只要一行太长,就会显示一个小字形,指示该行已换行以适合编辑器。(实际行内容没有改变)。

在此输入图像描述

我希望出现一个小字形,表明字符串已被包裹。

我不记得这是 Visual Studio 还是 ReSharper 设置,也不记得在哪里设置。

resharper visual-studio-2015

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

声明一个接口,其中具体实现具有具体类型

public interface ISomeInterface
{
    IOut SomeMethod(IIn aIn)
}

public class MyOut : IOut
{
    public string AnExtraProp {get; set;}
}

public class MyIn : IIn
{
    public string AnotherExtraProp {get; set;}    }
}

public class MyConcreteOfSomeInterface : ISomeInterface
{
     public MyOut SomeMethod(MyIn aIn)
     {
     }
} 
Run Code Online (Sandbox Code Playgroud)

是否可以让许多类(例如 MyConcreteOfSomeInterface、MyConcrete2OfSomeInterface,...)实现一个接口(例如 ISomeInterface),但仍具有具体类型的参数(例如 MyIn、MyOut 等)。

我意识到我可以声明:

public interface ISomeInterface<TIn, TOut>
{
    TOut SomeMethod(TIn aIn)
}
Run Code Online (Sandbox Code Playgroud)

但由于 ISomeInterface 有很多方法,所以这是不切实际的。假设我需要添加其他方法 SomeMethod2 和 SomeMethod3 那么我最终会得到:

public interface ISomeInterface<TIn, TOut, TIn2, TOut2, TIn3, TOut3>
{
    TOut SomeMethod(TIn aIn) …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns

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

在 Cloudflare Worker 中发出一堆异步子请求并在全部完成后返回?

我想将一组字符串传递给 Cloudflare 工作线程,然后让它循环遍历这些字符串并对每个字符串执行 GET,然后将 get 返回的 JSON 添加到工作线程返回给调用者的列表中。

一些伪代码:

var listOfAjaxResults
foreach someString in arrayOfStrings
{
    //Do AJAX call using someString and add to listOfResults
}

//Wait here until all requests in the loop have completed
//Return response form worker
return listOfAjaxResults
Run Code Online (Sandbox Code Playgroud)

我知道如何根据这篇文章提出非阻塞请求。我无法解决的是:

  1. 如何仅在循环中完成所有请求后才返回
  2. 使用哪种线程安全数据结构,以便在每个请求完成时可以安全地将其结果添加到列表中。

javascript cloudflare-workers

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

Auto Mapper 5,没有Ioc和Webforms

既然AutoMapper正在废除静态API和在运行时更改映射的能力,那么在没有IoC管理器的情况下我的WebForms应用程序就会出现问题.

对于这个问题的缘故拿给出我不能提出一个IoC经理到这个应用程序,而这将是"好做",没有它的应用一直在努力罚款数年,并且它不能正确的进行此时此刻.在未来可能,但不是现在.

使用AutoMapper之前我曾经做过的事情是在我实例化的每个类中都有一个方法,它由构造函数自动调用.在那种方法中,我将有必要:

Mapper.CreateMap<>()
Run Code Online (Sandbox Code Playgroud)

调用.这具有以下优点:

  • 我只根据请求绘制了我需要的内容(根据程序流程,这个映射列表会增长到我需要的位置)
  • 所有类型都是"本地的" - 这意味着我不必在解决方案中引用其他项目

我很高兴能够以这种方式满足每次执行操作的性能,而不是在Application_Start()中执行此操作.

但是使用AutoMapper 5 ... 从静态API读取迁移后,我现在必须:

  1. 做所有映射"某处",我可以访问我想要映射的所有类型.所以无论我把它放在哪里,我都必须在我的解决方案中引用其他所有组件?
  2. 具有存储的MapperConfiguration()实例某处全局访问-可以说,无论是HttpContext的或HttpApplication的,所以我可以调用MapperConfiguration.CreateMapper()我现在需要确保我有机会获得的HttpContext/HttpApplication的无处不在.这最终意味着不需要说HttpContext的项目现在需要访问它.

如果我在上面的1.和2.中的假设是正确的,我现在有一大堆紧密耦合的意大利面条代码.

所以我的问题是:

如何在一个webforms应用程序中使用AutoMapper 5,在解决方案中有许多项目(因此有很多类型),没有优雅的IoC?

c# asp.net webforms automapper automapper-5

0
推荐指数
1
解决办法
1109
查看次数