public static class WebConfig
{
private static IList<SystemConfigs> sysconfkeys;
static WebConfig()
{
sysconfkeys = systemconfigrep.GetAllSystemConfig();
}
private static string _SMTPPort = "";
public static string SMTPPort
{
get
{
return _SMTPPort = sysconfkeys.FirstOrDefault(e => e.metakey == "SMTPPort") != null ? sysconfkeys.FirstOrDefault(e => e.metakey == "SMTPPort").metavalue : "25";
}
}
private static string _SMTPUsername = "";
public static string SMTPUsername
{
get
{
return _SMTPUsername = sysconfkeys.FirstOrDefault(e => e.metakey == "SMTPUsername") != null ? sysconfkeys.FirstOrDefault(e => e.metakey == "SMTPUsername").metavalue : "";
}
}
}
我在我的视图或控制器中使用上述方式的系统级变量。 我如何设计我的这个类,以便在调用方法执行查询后立即调用这样的属性。
用法:webconfig.getallsystemconfig()。LogicalPath;
webconfig.getallsystemconfig()SMTPPORT;
答案 0 :(得分:1)
你可以使用扩展方法来完成这样的事情:
public static class WebConfig
{
private static IList<SystemConfigs> sysconfkeys;
public static IList<SystemConfigs> Configs()
{
return sysconfkeys ?? (sysconfkeys = systemconfigrep.GetAllSystemConfig());
}
public static string SMTPPort(this IList<SystemConfigs> configs)
{
return sysconfkeys.Any(e => e.metakey == "SMTPPort") ? sysconfkeys.FirstOrDefault(e => e.metakey == "SMTPPort").metavalue : "25";
}
}
你会像
一样使用它WebConfig.Configs().SMTPPort();
如果没有像你的例子那样进行缓存,但无论如何它应该是一个可以忽略不计的损失