我的数据对象中正在进行一些 AOP,这导致设计器在创建对象时失败。是否可以检测到对象是从设计器创建的,以便我可以中止 AOP 过程?
最好从 AOP 类中(它在一个库中,甚至不知道涉及 WPF。)也许通过查看工作目录(如果它与设计器不同)或类似的东西?
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance IsDesignTimeCreatable=True, Type={x:Type ui:DesignData}}"
class DesignData
{
public DesignData()
{
Func<int, ObservableCollection<Food>> createFoods = i =>
{
var r = new ObservableCollection<Food>();
for (int j = 0; j < 10; j++)
{
r.Add(new Food("Food #"+j+" for profile #"+i));
}
return r;
};
Profiles = new ObservableCollection<Profile>();
for (int i = 0; i < 20; i++)
{
//Crashes because of AOP start-up procedure
Profiles.Add(new Profile { Name = "ProfileName" + i, Foods = createFoods(i) });
}
}
public ObservableCollection<Profile> Profiles { get; set; }
}
如果答案是否定的,那么什么是合适的替代方案?我唯一能想到的就是创建一个与真实数据对象具有相同属性的全新数据对象,但这会非常烦人。