javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

node.js

performance

branch-prediction

git-commit

git-revert

validation

email-validation

undefined

scrum

kubernetes

设计模式-用C#3编写流畅接口的技巧

我正在寻找一些有关C#中流畅接口的好技巧。 我本人只是在学习它,但是渴望听到别人在我正在阅读的文章之外的想法。 我特别追求:

  1. 什么时候流利太多?
  2. 是否有流利的模式?
  3. C#中的什么使流利的界面更流利(例如扩展方法)
  4. 复杂的流利界面仍然是流利的吗?
  5. 重构以达到流畅的界面或重构现有的流畅界面
  6. 您曾经合作过或可以推荐的好例子吗?

如果您可以发表一个小贴士或想法,或每篇文章发表任何内容。 我也想看看他们如何获得投票。

先感谢您。

trans by 2020-08-01T15:52:20Z

如何使用Entity Framework 4.1“仅代码”流利API映射char属性?

我有一个具有char属性的对象:

public class Product
{
    public char Code
    {
        get;
        set;
    }
}

实体框架似乎无法映射字符(当我从模型对象创建数据库模式时,数据库中缺少此字段)。 无论如何,我可以使用流畅的API映射字符(例如,映射到字符串)吗? 我不想更改模型对象,因为它们是旧式共享库的一部分。

trans by 2020-07-23T23:36:04Z

红宝石-您可以在Python的核心类型上使用猴子补丁方法吗?

Ruby可以向Number类和其他核心类型添加方法以获得如下效果:

1.should_equal(1)

但是似乎Python无法做到这一点。 这是真的? 如果是这样,为什么? 它与不能修改类型有关吗?

更新:我不想谈论猴子修补的不同定义,而是仅关注上面的示例。 我已经得出结论,这无法完成,因为你们中的一些人已经回答了。 但是,我想更详细地解释为什么它不能完成,以及如果可以使用Python提供的功能,也许可以做到这一点。

回答一些问题:我可能要这样做的原因仅仅是美观/可读性。

 item.price.should_equal(19.99)

读起来更像英语,并清楚地表明哪个是测试值,哪个是期望值,如:

should_equal(item.price, 19.99)

这个概念是Rspec和其他一些Ruby框架所基于的。

trans by 2020-02-06T04:27:12Z

c#-条件构建器方法链接流利

我想知道使用.When()对象中的方法链接在流畅接口中实现.WithSkill()条件的最佳方法是什么?

例如,在以下示例中,我将如何实现.WithSkill().When()方法:

var level = 5;

var ninja = NinjaBuilder
    .CreateNinja()
    .Named("Ninja Boy")
    .AtLevel(level)
    .WithShurikens(10)
    .WithSkill(Skill.HideInShadows)
        .When(level > 3)
    .Build()

更新-此处提供示例解决方案。

trans by 2019-12-28T16:07:10Z

流利的接口和C#中的继承

我将举例说明一个问题。 有一个具有流畅接口的基类:

class FluentPerson
{
    private string _FirstName = String.Empty;
    private string _LastName = String.Empty;

    public FluentPerson WithFirstName(string firstName)
    {
        _FirstName = firstName;
        return this;
    }

    public FluentPerson WithLastName(string lastName)
    {
        _LastName = lastName;
        return this;
    }

    public override string ToString()
    {
        return String.Format("First name: {0} last name: {1}", _FirstName, _LastName);
    }
}

和一个孩子班:

class FluentCustomer : FluentPerson
{
    private long _Id;

    private string _AccountNumber = String.Empty;

    public FluentCustomer WithAccountNumber(string accountNumber)
    {
        _AccountNumber = accountNumber;
        return this;
    }
    public FluentCustomer WithId(long id)
    {
        _Id = id;
        return this;
    }

    public override string ToString()
    {
        return base.ToString() + String.Format(" account number: {0} id: {1}", _AccountNumber, _Id);
    }
}

问题在于,当您致电customer.WithAccountNumber("000").WithFirstName("John").WithLastName("Smith")时,您不能最后添加.WithId(123),因为WithLastName()方法的返回类型是FluentPerson(不是FluentCustomer)。

通常如何解决此问题?

trans by 2019-11-09T10:58:51Z

1 共1页