我有两个类,像这样的基类和继承类
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/