Vim*_*987 5 .net c# design-patterns
我有两个类定义如下:
public class RoleButton: Button
{
protected bool PrimaryRole;
protected bool SecondaryRole;
private string _role;
private AuthenticatedPage CurrentPage
{
get { return (AuthenticatedPage)Page; }
}
protected UserInfo CurrentUser
{
get { return CurrentPage.CurrentUser; }
}
protected void SetRole(string role)
{
_role = role;
}
protected override void OnPreRender(EventArgs e)
{
base.OnInit(e);
if (CurrentUser.IsSuperAdmin) return;
DataTable dt = CommandController.GetButtonRoleForUserByPortalID(CurrentUser.UserID,
ConvertUtility.ToInt32(AppEnv.PortalId()));
if (dt.Rows.Count > 0)
{
if (dt.Rows.Count > 1)
{
PrimaryRole = ConvertUtility.ToBoolean(dt.Rows[0][_role]);
SecondaryRole = ConvertUtility.ToBoolean(dt.Rows[1][_role]);
if (!PrimaryRole && !SecondaryRole)
{
Visible = false;
}
else
{
Visible = true;
}
}
else
{
PrimaryRole = ConvertUtility.ToBoolean(dt.Rows[0][_role]);
Visible = PrimaryRole;
}
}
else
{
Visible = false;
}
}
public class RoleImageButton: ImageButton
{
///
///same as above
///
}
Run Code Online (Sandbox Code Playgroud)
这些类的实现完全相同,所以我想删除这个重复,但我不知道这样做的技术.
你能告诉我这样做的方法吗?
我将创建一个BaseButton
派生自 的类Button
。如果每个按钮有任何特定的更改,则派生BaseButton
如下:
public class BaseButton : Button
{
///
protected override void OnPreRender(EventArgs e)
{
// Common base implementationi
}
}
public class ImageButton: BaseButton
{
// Specific implementation
public ImageButton()
{
this.Name = "ImageButton";
}
}
public class RoleButton: BaseButton
{
// Specific implementation
public RoleButton()
{
this.Name = "RoleButton";
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
185 次 |
最近记录: |