gpt4 book ai didi

c# - 从方法中分配属性

转载 作者:行者123 更新时间:2023-11-30 19:43:25 27 4
gpt4 key购买 nike

我有两个类,像这样的基类和继承类

public class A
{
public string Prop1 { get; set; }
}

public class B : A
{
public string Prop2 { get; set; }
}

现在我有一个在填充属性值后返回类 A 的方法

public A GetPopulatedValues()
{
//code to populate values here
}

现在我的问题是,如何一次分配所有属性值?

这行得通

public void Init()
{
var obj = new B();
obj.Prop1 = GetPopulatedValues().Prop1;
}

但是我想要这样的东西

  public void Init()
{
var obj = new B();
obj = GetPopulatedValues();
}

有什么想法吗?

最佳答案

创建构造函数:

public Foo(string prop1, string prop2)
{
Prop1 = prop1;
Prop2 = prop2;
}

或者复制构造函数:

public Foo(Foo other)
{
Prop1 = other.Prop1;
Prop2 = other.Prop2;
}

或者使用一个对象初始化器:

var foo = new Foo { Prop1 = "Hello", Prop2 = "World" };

但正如@RudiVisser 所说,您实际上需要在 GetPopulatedValues() 方法中解决此问题,方法是提供对您要填充的对象的引用:

static class FooPopulator
{
public static void PopulateValues(Foo foo)
{
foo.Prop1 = "Hello";
foo.Prop2 = "World";
}
}

var foo = new Foo();
FooPopulator.PopulateValues(foo);

现在您的 foo 对象可用且可填充,无需更改 Foo 类。额外的好处:当您添加要填充的属性时(比如 Prop3),您只需更改 PopulateValues() 方法。

在您的代码中,您也必须这样做,但是您还需要添加 Prop3 赋值,如果忘记,将导致错误。

关于c# - 从方法中分配属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15201400/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com