要检查对象是否为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)
我错过了什么吗?
源对象:
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) 我刚刚使用 ReSharper 设置了新的 Visual Studio 2015 环境。在我的旧系统上,IDE 代码编辑器窗口中,只要一行太长,就会显示一个小字形,指示该行已换行以适合编辑器。(实际行内容没有改变)。
我希望出现一个小字形,表明字符串已被包裹。
我不记得这是 Visual Studio 还是 ReSharper 设置,也不记得在哪里设置。
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) 我想将一组字符串传递给 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)
我知道如何根据这篇文章提出非阻塞请求。我无法解决的是:
既然AutoMapper正在废除静态API和在运行时更改映射的能力,那么在没有IoC管理器的情况下我的WebForms应用程序就会出现问题.
对于这个问题的缘故拿给出我不能提出一个IoC经理到这个应用程序,而这将是"好做",没有它的应用一直在努力罚款数年,并且它不能正确的进行此时此刻.在未来可能,但不是现在.
使用AutoMapper之前我曾经做过的事情是在我实例化的每个类中都有一个方法,它由构造函数自动调用.在那种方法中,我将有必要:
Mapper.CreateMap<>()
Run Code Online (Sandbox Code Playgroud)
调用.这具有以下优点:
我很高兴能够以这种方式满足每次执行操作的性能,而不是在Application_Start()中执行此操作.
但是使用AutoMapper 5 ... 从静态API读取迁移后,我现在必须:
如果我在上面的1.和2.中的假设是正确的,我现在有一大堆紧密耦合的意大利面条代码.
所以我的问题是:
如何在一个webforms应用程序中使用AutoMapper 5,在解决方案中有许多项目(因此有很多类型),没有优雅的IoC?