Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用业务对象作为测试数据生成器类的返回值_C#_Builder_Test Data - Fatal编程技术网

C# 使用业务对象作为测试数据生成器类的返回值

C# 使用业务对象作为测试数据生成器类的返回值,c#,builder,test-data,C#,Builder,Test Data,业务对象是Foo.cs 如果Foo的属性运行自定义逻辑呢?那么,创建Foo对象不是一个坏主意吗?它可以更改Foo对象内部的数据,并返回我不期望的值 public class FooBuilder { private string bar = "defaultBar"; private string baz = "defaultBaz"; private string bling = "defaultBling"; public FooBuilder Bar(st

业务对象是Foo.cs

如果Foo的属性运行自定义逻辑呢?那么,创建Foo对象不是一个坏主意吗?它可以更改Foo对象内部的数据,并返回我不期望的值

public class FooBuilder
{
    private string bar = "defaultBar";
    private string baz = "defaultBaz";
    private string bling = "defaultBling";

    public FooBuilder Bar(string value)
    {
        bar = value;
        return this;
    }

    public FooBuilder Baz(string value)
    {
        baz = value;
        return this;
    }

    public FooBuilder Bling(string value)
    {
        bling = value;
        return this;
    }

    public Foo Build()
    {
        return new Foo {Bar = bar, Baz = baz, Bling = bling};
    }
}

如果我理解你的要求

对于property来说,执行一些代码而不是设置备份字段是可以的。但是,如果您将一个属性设置为一个值,然后使用getter并发现它返回的值与您设置的值不同,那么这是意外的。因此,要么在属性中避免这种情况,要么使用对行为/数据更改提供描述性含义的方法

所以这很糟糕

var foo = new Foo();
foo.Bar = "hello bar";
string bar = foo.Bar;

Console.WriteLine(bar); // if this does not print "hello bar" then it is bad/unexpected

如果我理解你的要求

对于property来说,执行一些代码而不是设置备份字段是可以的。但是,如果您将一个属性设置为一个值,然后使用getter并发现它返回的值与您设置的值不同,那么这是意外的。因此,要么在属性中避免这种情况,要么使用对行为/数据更改提供描述性含义的方法

所以这很糟糕

var foo = new Foo();
foo.Bar = "hello bar";
string bar = foo.Bar;

Console.WriteLine(bar); // if this does not print "hello bar" then it is bad/unexpected

对不起,您的问题的措辞让我很难理解。对不起,您的问题的措辞让我很难理解。但这意味着在我的业务对象Foo中,我无法在酒吧中运行业务逻辑?!只要该属性的getter返回您期望的值,您就可以使用它。如果您有复杂的业务逻辑,那么也许您应该考虑使用Methods,我更希望得到这样的答案:“您不应该使用业务对象来完成此任务,而应该使用数据访问对象”。你怎么想?但这意味着在我的业务对象Foo中,我不能在酒吧属性中运行业务逻辑?!只要该属性的getter返回您期望的值,您就可以使用它。如果您有复杂的业务逻辑,那么也许您应该考虑使用Methods,我更希望得到这样的答案:“您不应该使用业务对象来完成此任务,而应该使用数据访问对象”。你怎么认为?