小编Dav*_*huu的帖子

洋葱建筑中的典型层次是什么?

我目前正在研究域驱动设计,并尝试将其应用于WPF项目.我观看了一些教程视频,并阅读了很多文章,例如:

我理解对接口和控制反转的关注.我读到有一些经常出现的层名称(域/核心用于表示知识领域,基础设施用于持久性,应用程序用于......我不明白),但它们会根据我阅读的文章而改变.有些人甚至没有出现.

是否有可能拥有一个理论上在洋葱架构中需要面对所有需求和问题的所有层的列表,它们的意图(它们包含什么样的代码,它们试图满足什么样的需要) ,他们需要参考哪一层),好吗?

.net c# architecture domain-driven-design onion-architecture

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

类型为Func的多播委托(具有返回值)?

我有以下代码:

Func<string, string> func1 = (param) =>
{
    Console.WriteLine("Func 1 executing");
    return "Hello" + param;
};
Func<string, string> func2 = (param) =>
{
    Console.WriteLine("Func 2 executing");
    return "World" + param;
};
Func<string, string> funcSum = func1 + func2;
string funcResult = funcSum("!");
Console.WriteLine(funcResult);
Run Code Online (Sandbox Code Playgroud)

输出是:

Func 1 executing
Func 2 executing
World!
Run Code Online (Sandbox Code Playgroud)

反转总和:

Func<string, string> funcSum = func2 + func1;
Run Code Online (Sandbox Code Playgroud)

给出输出:

Func 2 executing
Func 1 executing
Hello!
Run Code Online (Sandbox Code Playgroud)

我的初始测试是使用布尔返回类型完成的,返回的值也始终由最后一个函数确定.它是按预期工作的吗?我们不是在失去其他功能的回报价值吗?如果是这样,在现实世界中是否存在这些多播功能委托的用例?

.net c#

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

SQLzoo,SELECT 中的 SELECT 教程

我目前正在做本教程(http://sqlzoo.net/wiki/SELECT_within_SELECT_Tutorial),但我无法回答问题 8:

一些国家的人口是其邻国(同一大陆)的三倍以上。给国家和大陆。

.. 而我当前的查询不会被接受为答案:

SELECT x.name, x.continent FROM world x
WHERE (x.population * 3) > ALL (
SELECT y.population FROM world y
WHERE x.continent = y.continent )
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么 ?答案是什么 ?

sql

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

我应该在多大程度上强化 DDD 中实体和值对象的概念?

我正在使用 DDD 开发一个 C# 项目。我写了一些课程。有些属于实体类别,有些属于值对象类别。我的问题是,为了忠实于实体和值对象的定义,必须或应该做多少工作?

实体:

  • 禁止公共构造函数。必须使用工厂和/或静态方法,因此保证对象的唯一性(在内存中带有id)。
  • 运算符 ==、!= 重载和 Equals 方法重写,因此比较基于对象引用以外的其他内容;一个 ID

值对象:

  • 允许公共构造函数。工厂、静态方法是允许的,并且可以实现某种缓存,以(可选)保证对象的唯一性(如字符串驻留)。
  • 运算符 ==、!= 重载和 Equals 方法重写,因此比较基于两个对象的所有值。也可以使用结构体来代替。
  • 不可变的

这些是可以执行这些概念的可能性,但是,这些是强制性的吗?因为应用 DDD 概念,创建这些工厂、那些静态方法、重载和重写所有这些方法似乎是一个巨大的负载或少量的工作。

我应该走多远?

c# architecture design-patterns domain-driven-design

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

Xamarin形式:Prism和ReactiveUI可以在同一项目中使用吗?如果是这样,这是个好主意吗?

我已经为一个个人应用程序和增强功能开发了一个移动应用程序一个星期。我对WPF和MVVM有一定的经验,对移动开发没有经验。

这个想法是在测试一些编码原则的同时,制作一个跨平台应用程序:

我计划使用以下组件:

  • Prism.Unity.Forms:似乎提供应用程序结构,ioc,导航,似乎被广泛使用,并由顶尖人士完成
  • ReactiveUI,ReactiveUI.XamForms,ReactiveUI.Fody:WhenAnyValue,ObservableAsPropertyAttribute,ReactiveAttribute(教程),不使用它们对我来说似乎是一个巨大的机会

我的Visual Studio的当前结构如下:

  • Csproj
    • 视图模型
      • CreateExercisePageViewModel
      • HomePageViewModel
    • 观看次数
      • CreateExercisePage
      • 主页

我管理以下内容:

  • 通过使用Prism的导航功能,将HomePage设置为包含在NavigationPage中的初始页面。
  • 在XAML中声明一个命名按钮,并使用ReactiveUI功能(通过本教程所示,使用WhenActivated方法)通过在代码后创建的OneWay绑定来设置其Command属性。
  • 使用棱镜导航导航到第二页(CreateExercisePage)

一个问题是,网络上有几篇文章比较了Prism和ReactiveUI(google Prism与ReactiveUI)。

所以问题是:我同时使用两者是否做错了?

我现在没有问题,但是我会碰到一个吗?即使我没有,同时使用它们是否有意义?

c# architecture prism reactiveui xamarin.forms

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

ASP.NET如何使用post方法发送数据?

案子

我有两个Web表单,还有一些代码隐藏。第一个网络表单是一个公式编写器,我在其中输入一个字符串。我想使用post方法将该字符串发送到第二个公式,并显示它。

问题

我收到一条错误消息,说无法验证MAC Viewstate:

应用程序“ /”。验证MAC Viewstate。在群集中使用电池和电池的应用程序,可确保配置的有效性,并验证算法的有效性。自动生成群集的新peutpasêtreutiliséedans。

我究竟做错了什么 ?

Webform1.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server" action="WebForm2.aspx" method="post">
        <div>
            Enter your first name : <input type="text" name="FirstName"/><br />
            <input type="submit" />
        </div>
    </form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Webform2.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm2.aspx.cs" Inherits="WebApplication1.WebForm2" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <div> …
Run Code Online (Sandbox Code Playgroud)

html c# asp.net webforms

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

未引用的活动DispatcherTimer和垃圾收集器

我有以下XAML:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:self="clr-namespace:WpfApplication1"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Label Name="lblTime" FontSize="48" HorizontalAlignment="Center" VerticalAlignment="Center" />
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

代码隐藏是:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromSeconds(1);
        timer.Tick += timer_Tick;
        timer.Start();
        GC.Collect();
    }
    void timer_Tick(object sender, EventArgs e)
    {
        lblTime.Content = DateTime.Now.ToLongTimeString();
        GC.Collect();
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道的一些事实:

  • 即使.NET垃圾收集器是一个非确定性的,也可以通过调用GC.Collect()来强制收集.
  • 收集完成后,任何未引用的对象都将被销毁

在代码隐藏中,MainWindow不保留对计时器的任何引用.在我看来,它应该被销毁,界面不应该再更新,因为我放了一些GC.Collect调用.但它似乎不起作用,因为接口仍在更新,因此,对象仍然存在.

问题是:发生了什么?我错了吗?还是我错过了一些重要的事实?

编辑1:这段代码实际上是我在教程中找到的一个例子,展示了如何使用DispatcherTimer.但是我想知道当垃圾收集开始时会发生什么,这就是为什么我添加那些GC.Collect以便看看会发生什么.感谢我读过的关于.NET GC的大量教程,我知道调用GC.Collect是一个坏主意,除非非常特殊,否则不应该这样做.

.net c# wpf garbage-collection

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