解決方案1:您可以使用反射來創建一個空的屬性實例。我創建了一個方法,它將創建一個的第一級的實例,如下所示。
public TModel FillNullWithBlankInstances<TModel>(TModel model) where TModel : class
{
var type = model.GetType();
var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (var prop in properties)
{
var value = prop.GetValue(model, null);
if (value == null) // null property than create instance
{
var instance = Activator.CreateInstance(prop.PropertyType, false);
prop.SetValue(model, instance);
}
}
return model;
}
用法:
House house = _houseRepository.Entity.ByHouseId(houseId).First();
house = FillNullWithBlankInstances(house);
解決方案2:您可以使用??
這將檢查空,如果爲空將使用的是在這之後像下面。有關更多示例,您可以查看documentation。
House house = _houseRepository.Entity.ByHouseId(houseId).First();
house = house ?? new House { };
house.Room = house.Room ?? new Room { };
我建議你做一個函數,在你需要的時候爲你做這個。
public House FillNullWithBlankInstances(House house)
{
house = house ?? new House { };
house.Room = house.Room ?? new Room { };
return house;
}
和使用將是:
House house = _houseRepository.Entity.ByHouseId(houseId).First();
house = FillNullWithBlankInstances(house);
我想這樣做的房子=房子?新的房子{},並有它填充所有的空子模型,但它不 – user1854438 2015-04-03 16:03:20
請留下我對**解決方案的反饋1 * – adricadar 2015-04-03 17:36:33