小编Cra*_*eer的帖子

DDD实体利用服务

我有一个应用程序,我正在尝试使用至少一个名义上的DDD类型域模型,并正在努力与某一块.

我的实体有一些业务逻辑,它使用我目前在某些域服务中的一些财务计算和速率计算,以及我在一个值对象中放置的一些常量值.

我正在努力解决如何让实体使用域服务中的逻辑,或者这些服务中的逻辑是否属于那里.这是我到目前为止:

public class Ticket
{
    public Ticket(int id, ConstantRates constantRates, FinancialCalculationService f, RateCalculationService r)
    {
        Id = id;
        ConstantRates = constantRates;
        FinancialCalculator = f;
        RateCalculator = r;
    }

    private FinancialCalculationService FinancialCalculator { get; set; }

    private RateCalculationService RateCalculator { get; set; }

    private ConstantRates ConstantRates { get; set; }

    public int Id { get; private set; }

    public double ProjectedCosts { get; set; }

    public double ProjectedBenefits { get; set; }

    public double CalculateFinancialGain()
    {
        var discountRate = …
Run Code Online (Sandbox Code Playgroud)

c# domain-driven-design

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

将IoC容器引入旧版代码

我正在编写一个新的.NET库供我公司内部使用,它将通过依赖注入使用IoC.当然,如果我们使用IoC容器来解析实例,这个库将更容易使用.

但是,将调用此库的代码当前不使用任何类型的依赖注入,并且重构遗留代码以使用DI超出了我的项目的范围.那么,在这个遗留代码中开始使用Container从我的新库中获取实例的最佳方法是什么?

如果可能的话,我想避免乱丢遗留代码,硬编辑我选择的任何IoC容器.由于我对DI比较陌生,所以我们有可能会改变我们想要在某个时刻使用哪个Container的想法.

如果我将我的容器包装在CodePlex上的CommonServiceLocator库之类的东西上,这是一种合理的方法吗?

其他人做了什么?

.net c# design-patterns dependency-injection

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

使用TFS为每个分支创建存储库

我有一个TFS环境,具有以下分支设置

  • Dev - 开发人员的主要工作分支
  • 主要 - 稳定,可释放的分支
  • 修补程序 - 用于修复不属于正常发布周期的生产代码

我们正在努力使用Nuget,我想配置这样的东西,使得Dev分支中的代码从'Dev'nuget存储库中提取包,从'Main'获取主要包,等等.

现在,我已经想到了一些事情,我有一个文件坐在我的分支根,告诉nuget.exe使用哪个存储库.

我现在正试图弄清楚如何在每个分支中使这些文件的内容不同.我可以单独检查它们到每个分支,但这会引入从Dev-> Main和Main-> HotFix合并的问题.

所以,我认为我想要做的是以某种方式将这个特定的配置文件排除在Dev-> Main等的合并之外.任何方法都可以做到这一点?

或者,或者,还有其他一些方法来完成我想要用Nuget做的事情,在指向不同分支的不同nuget存储库方面?

merge tfs tfs2010 nuget

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

内联.Net方法时,属性会发生什么?

我在一个类中有一些代码,它爬行堆栈跟踪以在其调用堆栈中的方法上查找特定属性.

我注意到我的一个测试开始从自动构建失败,当时该测试总是从我的机器传递出来.当我深入研究它时,看起来有问题的代码在调试模式或发布模式下工作正常,只要你连接了调试器,但在没有调试器的发布模式下失败.

从我所看到的,我正在寻找的方法是内联,当发生这种情况时,该方法的属性将丢失.

是这样的吗?属性是否在那时丢失了?

这是一个重现我的问题的小应用程序:

using System;
using System.ComponentModel;
using System.Diagnostics;
using System.Reflection;


namespace InliningAndAttributes
{

    public class SomeClass
    {

        [Description("Foo")]
        public void SomeMethodThatWillGetInlined()
        {
            SomeMethodThatWontGetInlined();
        }

        protected virtual void SomeMethodThatWontGetInlined()
        {
            var caller = FindDescribedCaller();
            Console.WriteLine("Could I find description attribute? {0}", caller != null);
        }

        private MethodBase FindDescribedCaller()
        {
            var callStack = new StackTrace();
            int frameIndex = 0;
            while (frameIndex++ <= callStack.FrameCount)
            {
                Console.WriteLine("Getting frame" + frameIndex);
                var currentFrame = callStack.GetFrame(frameIndex);
                if (currentFrame == null)
                {
                    continue;
                }
                var …
Run Code Online (Sandbox Code Playgroud)

.net inline

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