小编mnw*_*mit的帖子

ASP.NET 5如何注入启动的依赖项?

我正在研究ASP.NET 5文档(它比旧版本更好,更好.)我知道ASP.NET 5包含一个简单的内置控制反转(IoC)容器,默认支持构造函数注入.据我所知,配置服务和依赖是在ConfigureServices()方法内部完成的.

该ConfigureServices()方法在StartUp方法之后调用.

所以我的问题是:ASP.NET 5如何在内部注入Startup的依赖项?

我想知道,因为如果我想注入另一个依赖项,例如IFooEnviroment我该怎么做?

dependency-injection asp.net-core

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

Elvis运算符在一个转换调用链中

elvis运算符,即null条件运算符,非常酷.

在LINQ查询中,它与null合并"??"一致很好用 运营商.

Somedata.Where(dt=>(dt?.Inner?.InnerMost?.Include=="Yes")??false);
Run Code Online (Sandbox Code Playgroud)

但是如果你需要施放中间值,你会怎么做?

对于链中的一个链接,它可以正常工作.

Somedata.Where(dt=>(
     ((InnerClass)dt?.Inner)
     ?.InnerMost)?.Include=="Yes")
     ??false);
Run Code Online (Sandbox Code Playgroud)

但是通过额外的必要施法,施法和调用被"驱散".

Somedata.Where(dt=>(
     ((InnerMostClass)            <=== Cast
     ((InnerClass)dt?.Inner)
     ?.InnerMost)?.Include=="Yes"))         <=== Use
     ??false);
Run Code Online (Sandbox Code Playgroud)

可能在这里不止一次弄乱了括号,但我希望你明白这个想法.

虽然这个"火车残骸"调用链是一种代码味道,但这样做是否有更具表现力的方式来提高简洁性和清晰度?

c# linq null-coalescing-operator c#-6.0 null-conditional-operator

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

关系未设置为null

我有一个非常简单的EF操作失败:打破两个实体之间的关系,如下面的代码所示:

public async Task RemoveCurrentTeacherOfGroup(int groupId)
{
    var group = await _dataContext.Groups.SingleAsync(g => g.Id == groupId);
    group.Teacher = null;
    await _dataContext.SaveChangesAsync();
}
Run Code Online (Sandbox Code Playgroud)

数据库是代码优先生成的.实体定义如下:

public class Teacher
{
    public int Id { get; set; }
    ..
    public virtual List<Group> Groups { get; set; }
}
public class Group
{
    public int Id { get; set; }
    ..
    public virtual Teacher Teacher { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然而,破坏关系不起作用,教师一直指向同一个实体.当使用调试器步进时,我看到在.Teacher = null之后,Teacher属性不会变为null.我尝试使用同步替代方案,它具有相同的效果:

public void RemoveCurrentTeacherOfGroup(int groupId)
{
    var group = _dataContext.Groups.Single(g => g.Id == …
Run Code Online (Sandbox Code Playgroud)

c# null entity-framework entity-framework-6.1

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

如何首先使用实体​​框架代码定义一对一的自引用

我想在实体Stuff上实现版本控制。每个实体都有对下一个版本的可选引用(最新版本为null)和对先前版本的可选引用(第一个版本为null)。我先使用实体​​框架6,然后编写代码。我尝试使用以下模型和modelbuilder语句(以及许多变体)。

public class Stuff
{
    public int StuffId { get; set; }

    [ForeignKey("NextVersion")]
    public int? NextVersionId { get; set; }
    [InverseProperty("PreviousVersion")]
    public virtual Stuff NextVersion { get; set; }

    public virtual Stuff PreviousVersion { get; set; }
}

modelBuilder.Entity<Stuff>().HasOptional(t => t.NextVersion).WithOptionalDependent(t => t.PreviousVersion);
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,[ForeignKey(“ NextVersion”)]将被忽略,并生成一个外键NextVersion_StuffId。如何指示EF使用属性NextVersionId作为外键?

c# entity-framework foreign-keys self-reference entity-framework-6

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

尽管使用了Microsoft.Net.Compilers nuget包,但VS2013上的C#6错误消息

我们的50人开发团队中有一半以上仍然使用Visual Studio 2013.尽管如此,我们还是想使用C#6.所以我们尝试使用这个解决方案:https://stackoverflow.com/a/32010632/3997704.

编译Microsoft.Net.Compilers工作正常,我们的CI环境也是如此.但是,Visual Studio在与C#6功能相关的错误列表中显示了许多错误.我试图通过使用干净的解决方案,重建,重新启动Visual Studio和清除ReSharper缓存来解决错误,但没有工作.

c# compiler-errors visual-studio visual-studio-2013 c#-6.0

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

在C#中隐藏/显示Windows窗体面板

我尝试在C#中显示/隐藏面板,但是当我点击button1时,我想看到panel1但是出现了panel2.当我按下button2时,panel2消失了.但是当我第一次在按钮2上爬行时,panel2没有出现.我不知道我的代码有什么问题,但它是:

public Form3()
    {
        InitializeComponent();
    }

    bool show1;
    bool show2;
    private void button1_Click(object sender, EventArgs e)
    {
        if(show1)
        {
            panel1.Visible = false;
            show1 = false;
        }
        else
        {
            panel1.Visible = true;
            show1 = true;
        }
        Application.DoEvents();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        if (!show2)
        {
            panel2.Visible = true;
            show2 = true;
        }
        else
        {
            panel2.Visible = false;
            show2 = false;
        }
        Application.DoEvents();
    }
Run Code Online (Sandbox Code Playgroud)

c# panel winforms

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