我有一个服务多个网站的应用程序,并希望设置这样的颜色策划:
网站Configuration.cs
public class WebsiteConfiguration
{
public ApplicationConfiguration ApplicationConfiguration { get; set; }
public string CustomLinkColour { get; set; }
public bool IsCustomLinkColourActive { get; set; }
public string LinkColour
{
get
{
return (IsCustomLinkColourActive ? CustomLinkColour : ApplicationConfiguration.DefaultLinkColour);
}
}
public string CustomTextColour { get; set; }
public bool IsCustomTextColourActive { get; set; }
public string TextColour
{
get
{
return (IsCustomTextColourActive ? CustomTextColour : ApplicationConfiguration.DefaultTextColour);
}
}
// ...and so on for each colour scheme element...
}
ApplicationConfiguration.cs
public class ApplicationConfiguration
{
public List<WebsiteConfiguration> WebsiteConfigurations { get; set; }
public string DefaultLinkColour { get; set; }
public string DefaultTextColour { get; set; }
//... and so on for each colour scheme element...
}
问题
这需要做很多工作!
上面的例子中只有2个配色方案元素,但可能有50多个。
此外,它在视图文件中创建了大量工作,包含if else
块等。
尝试解决方案
ColourSchemeItem
类管理逻辑。
public class ColourSchemeItem
{
public string DefaultColour { get; set; }
public string CustomColour { get; set; }
public bool IsCustomColourActive { get; set; }
public string ActiveColour
{
get
{
return (IsCustomColourActive ? CustomColour : DefaultColour);
}
}
}
然后WebsiteConfiguration
变得更加简单......
public class WebsiteConfiguration
{
public ApplicationConfiguration ApplicationConfiguration { get; set; }
public ColourSchemeItem Link { get; set; }
public ColourSchemeItem Text { get; set; }
// ...and so on for each colour scheme element...
}
然而...
但不知怎的,我需要从ApplicationConfiguration
获取默认颜色到ColourSchemeItem
。我无法弄清楚如何。
如果ColourSchemeItem
包含对其父级的引用 - WebsiteConfiguration
- 我收到No Key Defined for Entity
错误。
如果ColourSchemeItem不包含对其父级的引用,则无法从WebsiteConfiguration.ApplicationConfiguration
访问默认颜色。
ColourSchemeItem
类中访问数据库。如果有50多个,我不想这样做。 答案 0 :(得分:0)
创建自定义构造函数,并将默认值设置为AplicationConfiguration