C# 谈谈Interface和通过Interface传递web页面数据
接口:描述可属于任何类或结构的一组相关功能,通过interface关键字来声明;
接口只包含方法、委托或事件和属性的签名(接口包含的成员)、不能包含字段(因为字段是包含数据的)。方法的实现是“继承”接口的类中完成的;
接口可以包含的成员的访问修饰符只能且默认为public;
一个接口可以从一个或多个基接口继承;
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员;
当基类型列表包含基类和接口时,基类必须是列表中的第一项;
实现接口的类可以显式实现该接口的成员,显示实现的成员不能通过类实例访问,而只能通过接口实例访问;
类和结构可以按照类继承基类或结构的类似方式继承接口;但注意:
类或结构可继承多个接口;
类或结构继承接口时,仅继承方法名称和签名,因为接口本身不包含实现;
接口和接口成员是抽象的(但不用写出abstract关键字);接口不提供默认实现;
接口只包含方法、委托或事件和属性的签名(接口包含的成员)、不能包含字段(因为字段是包含数据的)。方法的实现是“继承”接口的类中完成的;
接口可以包含的成员的访问修饰符只能且默认为public;
一个接口可以从一个或多个基接口继承;
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员;
当基类型列表包含基类和接口时,基类必须是列表中的第一项;
实现接口的类可以显式实现该接口的成员,显示实现的成员不能通过类实例访问,而只能通过接口实例访问;
类和结构可以按照类继承基类或结构的类似方式继承接口;但注意:
类或结构可继承多个接口;
类或结构继承接口时,仅继承方法名称和签名,因为接口本身不包含实现;
接口和接口成员是抽象的(但不用写出abstract关键字);接口不提供默认实现;
接口是一种规划(为你定义出一系列的规则和任务,但不去实现它);
先看一个实例:
interface IPoint
{
// Property signatures:
int x
{
get;
set;
}
int y
{
get;
set;
}
}
class Point : IPoint
{
// Fields:
private int _x;
private int _y;
// Constructor:
public Point(int x, int y)
{
_x = x;
_y = y;
}
// Property implementation:
public int x
{
get
{
return _x;
}
set
{
_x = value;
}
}
public int y
{
get
{
return _y;
}
set
{
_y = value;
}
}
}
class MainClass
{
static void PrintPoint(IPoint p)
{
Console.WriteLine("x={0}, y={1}", p.x, p.y);
}
static void Main()
{
Point p = new Point(2, 3);
Console.Write("My Point: ");
PrintPoint(p);
}
}
// Output: My Point: x=2, y=3
{
// Property signatures:
int x
{
get;
set;
}
int y
{
get;
set;
}
}
class Point : IPoint
{
// Fields:
private int _x;
private int _y;
// Constructor:
public Point(int x, int y)
{
_x = x;
_y = y;
}
// Property implementation:
public int x
{
get
{
return _x;
}
set
{
_x = value;
}
}
public int y
{
get
{
return _y;
}
set
{
_y = value;
}
}
}
class MainClass
{
static void PrintPoint(IPoint p)
{
Console.WriteLine("x={0}, y={1}", p.x, p.y);
}
static void Main()
{
Point p = new Point(2, 3);
Console.Write("My Point: ");
PrintPoint(p);
}
}
// Output: My Point: x=2, y=3
上面是一个简单的接口实现,如果在一个Web网页上的.CS文件中继承一个接口,如下:
先定义接口:
public interface Iuser { string UserName { set ; get ; } string Role { set ; get ; } string Age { set ; get ; } string Sex { set ; get ; } bool Userlogin( string Name, string PassWord); } |
新建一个页面Login.aspx,代码如下;
<body> <form id= "form1" runat= "server" > <div> <table class = "style1" > <tr> <td class = "style2" > <asp:Label ID= "lblUsername" runat= "server" Text= "Username" ></asp:Label> </td> <td> <asp:TextBox ID= "txtUserName" runat= "server" ></asp:TextBox> </td> </tr> <tr> <td class = "style2" > <asp:Label ID= "lblPassWord" runat= "server" Text= "PassWord" ></asp:Label> </td> <td> <asp:TextBox ID= "txtPassWord" runat= "server" ></asp:TextBox> </td> </tr> <tr> <td class = "style2" > </td> <td> <asp:Button ID= "btnSubmit" runat= "server" onclick= "btnSubmit_Click" Text= "Submit" /> </td> </tr> <tr> <td class = "style2" > </td> <td> <asp:Label ID= "lblMessage" runat= "server" ></asp:Label> </td> </tr> </table> </div> </form> </body> |
Login.aspx.cs代码如下:
public partial class Login : Iuser { protected void Page_Load( object sender, EventArgs e) { } private string _Age; private string _Role; private string _Sex; private string _UserName; #region Iuser Members public string Age { get { return _Age; } set { _Age = value; } } public string Role { get { return _Role; } set { _Role = value; } } public string Sex { get { return _Sex; } set { _Sex = value; } } public string UserName { get { return _UserName; } set { _UserName = value; } } public bool Userlogin( string Name, string PassWord) { return true ; } #endregion protected void btnSubmit_Click( object sender, EventArgs e) { if (Userlogin(txtUserName.Text, txtPassWord.Text)) { lblMessage.Text = "login Successful!" ; SetUserInfo(txtUserName.Text); } else { lblMessage.Text = "Login fail!" ; } } protected void SetUserInfo( string Name) { Age = "25" ; Role = "Visit" ; Sex = "Man" ; UserName = "spring yang" ; } } |
然后新建一个UsingUser.cs类;
代码如下:
public class UsingUser : WebPart, Iuser { private string _Age; private string _Role; private string _Sex; private string _UserName; #region Iuser Members public string Age { get { return _Age; } set { _Age = value; } } public string Role { get { return _Role; } set { _Role = value; } } public string Sex { get { return _Sex; } set { _Sex = value; } } public string UserName { get { return _UserName; } set { _UserName = value; } } public bool Userlogin( string Name, string PassWord) { return true ; } #endregion private void AddControlToWebPart() { Type controlType = Type.GetType( "ASP.web_Login_aspx,webinterface, Version=1.0.0.0, Culture=neutral, PublicKeyToken=9f4da00116c38ec5" ); System.Web.UI.UserControl userControl = (System.Web.UI.UserControl) this .Page.LoadControl(controlType, null ); Iuser iuserProperty = userControl as Iuser; Age = iuserProperty.Age; Role = iuserProperty.Role; Sex = iuserProperty.Sex; UserName = iuserProperty.UserName; this .Controls.Add(userControl); } } |
这样就可以调用页面内容的数据了,通过接口传递页面的数据就这样完成了,你可以在UsingUser.cs做你想要的操作了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架