在這種情況下我有一個包含與此命名約定一些字符串屬性的對象Foo
:Foo.Bar1
,Foo.Bar2
,等...如何將可變長度列表映射到對象屬性?
我想用未知長度的字符串列表來映射到每個Bar
( N)屬性:
public class Mapper()
{
public Foo MapToFoo(List<string> list)
{
var Foo = new Foo();
foreach (var item in list)
{
//? Here is some psudo-code/logic of what I am trying to achieve:
//Bar*X* = item
//X++
}
return Foo;
}
}
public class Foo
{
public string Bar1 { get; set; }
public string Bar2 { get; set; }
public string Bar3 { get; set; }
}
我承認我可以只添加public List<string> Bars
和擺脫Bar1
,Bar2
,Bar3
。雖然這可能是首選的解決方案,但在我的特殊情況下,需要對緊密結合的傳統項目進行大量更改。
有沒有辦法做到這一點?如果是這樣,那麼映射永遠不會尋找不存在的BarX(即在這種情況下爲Bar4
)?
這是可能的,你將有你有許多懸而未決的要求,才能使用雲南財貿爲 –
。如果列表的字符串多於Foo的屬性,該怎麼辦?如果有更多的Foo屬性比字符串?反射的屬性不保證順序,字符串2可以設置Bar3值嗎?我建議你不要這樣做,建立一個[Adapter](https://en.wikipedia.org/wiki/Adapter_pattern)來橋接遺留代碼。 – Crowcoder