我的数据对象中有一些AOP,这导致Designer在创建对象时失败。是否可以从设计器检测到正在创建对象,以便我可以中止AOP程序?
最好是在AOP类中(在lib中,甚至不知道WPF是否参与。)也许通过查看workdir(如果通过设计者不同)或类似的东西?
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; }
}
如果答案是否定的,那么什么是合适的选择?我唯一能想到的就是创建一个全新的数据对象,它具有与真实数据对象相同的属性,但这会令人非常烦人。