我有以下类,其中包含有助于管理网站用户的静态属性和方法.我想通过覆盖一些属性来重新使用这个类.
public class Account { public static string sessionName = "Account"; public static string tableName = "Accounts"; public static bool isLoggedIn(){ return HttpContext.Current.Session[sessionName] != null; } public static bool login(string email, string password){ //connect to database and return user details from specified table DataTable t = Database.login(tableName, email, password); DataRow r = t.Rows[0]; HttpContext.Current.Session[sessionName] = r; return true; } public static object val(string name){ return ((DataRow)HttpContext.Current.Session[sessionName])[name]; } }
这基本上使用属性中定义的会话名称将用户输入并将其详细信息存储在会话中的DataRow中.
有可能做类似下面的事情来使用这个类与多种类型的用户?
public class WebsiteUser : Account { public override string sessionName = "WebsiteUser"; public override string tableName = "WebsiteUsers"; } public class TradeUser : Account { public override string sessionName = "TradeUser"; public override string tableName = "TradeUsers"; }
然后调用以下代码以使用每个派生类.
if (WebsiteUser.isLoggedIn()){ //manage website user } if (TradeUser.isLoggedIn()){ //manage trade user }
Marek.. 6
不可以.您无法覆盖静态成员.
你的想法很好.只需重构代码即可使用实例成员并覆盖它们.
或者更好的是,在他的特定情况下 - 将值作为构造函数参数传递.您没有覆盖任何逻辑,您只需要在字段中存储和返回数据.
不可以.您无法覆盖静态成员.
你的想法很好.只需重构代码即可使用实例成员并覆盖它们.
或者更好的是,在他的特定情况下 - 将值作为构造函数参数传递.您没有覆盖任何逻辑,您只需要在字段中存储和返回数据.