小编Mar*_*arr的帖子

带有服务层和存储库层的ASP.NET MVC,应该在哪里定义接口?

我正在为具有存储库层和服务层的.NET MVC应用程序确定一个相当简单的分层体系结构.我找到了一些相当清晰和简单的例子,特别是www.asp.net,以及这里的一些问题和答案,但我正在寻找一些更简单的东西,适合小型应用程序,但是它使用不同的项目,以获得跨越的想法.我上面链接的示例将存储库和服务作为Models命名空间中的类.这对我来说是不够明确的分离能够恰当地说明它.

我有一个单独的项目用于实现接口IRepository的存储库.Service有一个单独的项目,它实现了IService并获取了一个IRepository(构造函数注入).该服务实现了IService.这个例子就足以让控制器实例化服务,而不需要IoC容器.将其视为理解最佳架构实践的中间步骤,这是逐步构建包含依赖注入和可能更多层的序列的一部分.

问题是,我应该在哪里定义IRepository和IService?当然,服务和存储库项目都需要引用它们.很明显,它们应该在服务和存储库项目引用的另一个项目中定义.如果是这样,那么一个好的命名约定是什么?XXXXContracts之类的东西?

同样,对于在表示层,服务层和存储库层之间传递的数据模型,是否可以使用所有层引用的名为XXXXModels的单独项目?我知道在某些情况下,服务和存储库层之间传递的模型可能与服务层和表示层之间传递的模型不同,但原理是相同的.

我在这里找到了类似问题的答案,但它们往往涉及比我在此概述的更复杂的架构.我希望实现一个非常简单和干净的两层图解,可以看作是参考数据层并在控制器中具有业务逻辑的一两步,这就是全部.我知道有一个强有力的论据可以直接进入全面的最佳实践,但不是每个人都适合一次性完成跳跃.

asp.net-mvc repository-pattern service-layer

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

TypeScript中的枚举:JavaScript代码在做什么?

以下TypeScript:

enum PrimaryColors { Red, Green, Blue };
Run Code Online (Sandbox Code Playgroud)

生成以下JavaScript:

var PrimaryColors;
(function (PrimaryColors) {
    PrimaryColors[PrimaryColors["Red"] = 0] = "Red";
    PrimaryColors[PrimaryColors["Green"] = 1] = "Green";
    PrimaryColors[PrimaryColors["Blue"] = 2] = "Blue";
})(PrimaryColors || (PrimaryColors = {}));
;
Run Code Online (Sandbox Code Playgroud)

我很尴尬地承认我不明白JavaScript在做什么.
括号中的函数使用另一个赋值作为索引/键来分配字符串值.我之前没见过这样的东西.
那个函数后面的(PrimaryColors ||(PrimaryColors = {})的目的是什么?
如果答案是正确学习JavaScript,我会很乐意接受它,只要它附带一个明确解释我所看到的内容的建议来源这里.

javascript enums iife typescript

11
推荐指数
3
解决办法
4229
查看次数

将字符串拆分为具有最大长度的行的最佳方法,而不会破坏单词

我希望将一个字符串分成指定最大长度的行,如果可能的话,不分割任何单词(如果有一个单词超过最大行长,则必须将其拆分).

与往常一样,我敏锐地意识到字符串是不可变的,并且最好使用StringBuilder类.我已经看过将字符串拆分为单词的示例,然后使用StringBuilder类构建行,但下面的代码对我来说似乎"更整洁".

我在描述中提到"最好"而不是"最有效",因为我也对代码的"口才"感兴趣.字符串永远不会很大,通常会分成2行或3行,并且不会发生数千行.

以下代码真的很糟糕吗?

private static IEnumerable<string> SplitToLines(string stringToSplit, int maximumLineLength)
{
    stringToSplit = stringToSplit.Trim();
    var lines = new List<string>();

    while (stringToSplit.Length > 0)
    {
        if (stringToSplit.Length <= maximumLineLength)
        {
            lines.Add(stringToSplit);
            break;
        }

        var indexOfLastSpaceInLine = stringToSplit.Substring(0, maximumLineLength).LastIndexOf(' ');
        lines.Add(stringToSplit.Substring(0, indexOfLastSpaceInLine >= 0 ? indexOfLastSpaceInLine : maximumLineLength).Trim());
        stringToSplit = stringToSplit.Substring(indexOfLastSpaceInLine >= 0 ? indexOfLastSpaceInLine + 1 : maximumLineLength);
    }

    return lines.ToArray();
}
Run Code Online (Sandbox Code Playgroud)

c# string stringbuilder split

11
推荐指数
3
解决办法
8082
查看次数

WCF服务 - 如何指定字符串元素的最大(和/或最小)长度?

我正在寻找一种方法来获得从WCF服务生成的WSDL中指定的字符串元素的最大(和/或最小)长度.

我已经查看了WCF数据注释,这对于实现验证非常简洁,但是它没有将约束放入WSDL中,因此客户端不会意识到它们.

是否有一种相对简单的方法可以在WSDL中反映StringLength Data Annotation属性?或者,如果不这样做,另一种以从WCF服务生成WSDL的方式指定约束的方法会包含它吗?

c# wcf wsdl web-services data-annotations

6
推荐指数
0
解决办法
607
查看次数

单击时如何爆炸剑道饼图楔形?

我知道如何最初爆炸饼图楔形(简单地将相关数据项的爆炸设置为true),但我想要做的是在JavaScript(绑定到seriesClick事件的函数)中点击时楔形爆炸.当然,我希望重置任何其他爆炸楔形,这样一次只有一个爆炸楔形.

当然,我可以通过进行Ajax调用来获取图表,传递一个参数来指示被点击的楔形来实现这一点,但这非常低效,并且可能非常慢,这取决于数据的连接和复杂性(和/或需要的嘎吱嘎吱声).

我在其他地方找到了同一问题的一个答案,但建议的解决方案不适用于Kendo图表(设置了Kendo不支持的属性).

如果有人在这方面有任何经验,我将非常感谢您对我的任何建议.

kendo-ui kendo-dataviz

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

jQueryUI可排序列表与Knockout结合使用 - 嵌套可排序列表

我是Knockout的新手(几天),我正在尝试重新编写一个具有嵌套可排序列表的页面来使用它.

我在这里找到了使用Knockout可排序列表的一个很好的答案:针对jQuery UI的Knockout自定义绑定可排序 - 奇怪的行为

但是,我无法使用嵌套的可排序列表.尝试单击并拖动根列表下方的任何项目都会拖动关联的根项目.换句话说,嵌套列表根本不起作用.

上述解决方案中的第二个选项就是我的选择.这对我来说似乎是最简单和最清晰的.是否有一种相对简单的方法将其应用于嵌套排序?

nested-sortable knockout.js

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