C# 谈谈Interface和通过Interface传递web页面数据

接口:描述可属于任何类或结构的一组相关功能,通过interface关键字来声明;
接口只包含方法、委托或事件和属性的签名(接口包含的成员)、不能包含字段(因为字段是包含数据的)。方法的实现是“继承”接口的类中完成的;
接口可以包含的成员的访问修饰符只能且默认为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

上面是一个简单的接口实现,如果在一个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" οnclick="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 Memberspublic 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;}#endregionprotected 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 Memberspublic 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;}#endregionprivate 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做你想要的操作了.


转载于:https://www.cnblogs.com/springyangwc/archive/2011/03/16/1986136.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/387458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring支持如下5种作用域

当通过Spring容器创建一个Bean实例时&#xff0c;不仅可以完成Bean实例的实例化&#xff0c;还可以为Bean指定特定的作用域。Spring支持如下5种作用域&#xff1a; singleton&#xff1a;单例模式&#xff0c;在整个Spring IoC容器中&#xff0c;使用singleton定义的Bean将只有…

RBAC授权

给用户授予RBAC权限没有权限会报如下错误&#xff1a;执行查看资源报错&#xff1a; unable to upgrade connection: Forbidden (userkubernetes, verbcreate, resourcenodes, subresourceproxy)[roottest4 ~]# kubectl exec -it http-test-dm2-6dbd76c7dd-cv9qf sh error: una…

出卷子

http://chujuanzi.com/ 出卷子 涵盖初高中全部学科题库&#xff0c;全国名校试卷最快更新。试卷新、试题全、解析准、完全免费&#xff0c;提供丰富试题辅助教师有效出试卷&#xff0c;组卷方便快捷。&#xff08;高中语文 高中数学 高中英语 高中物理 高中化学 高中生物 高中政…

2.10 stack

#include<stack> 后进先出 Last In First Out LIFO 插入和删除元素只能在表的一端进行。 插入端 栈顶 Stack Top 入栈 Push 删除端 栈底 Stack Bottom 出栈 Pop stack<int> s; s.push(1); //入栈 int i s.top(); //获得栈顶元素 s.pop(); //出栈 s.size…

13结构型模式之桥接模式

概念 Bridge 模式又叫做桥接模式&#xff0c;是构造型的设计模式之一。Bridge模式基于类的最小设计原则&#xff0c;通过使用封装&#xff0c;聚合以及继承等行为来让不同的类承担不同的责任。它的主要特点是把抽象&#xff08;abstraction&#xff09;与行为实现&#xff08;i…

话说Svn与Git的区别

把第一条理解到位思想到位了做起来才会有的放矢&#xff0c;其他几条都是用的时候才能体会到 1) 最核心的区别Git是分布式的&#xff0c;而Svn不是分布的。能理解这点&#xff0c;上手会很容易&#xff0c;声明一点Git并不是目前唯一的分布式版本控制系统&#xff0c;还有比如M…

Ubuntu下Postgres安装与配置

postgres8.4安装配置&#xff1a;1.安装postgres8.4~$ sudo apt-get install postgresql 2.修改超级管理员postgres密码&#xff1a;以系统用户运行psql~$ sudo -u postgres psql postgres修改postgres密码(123456)postgres# /password postgres 3.备份修改的配置文件&#xff…

2.11 queue

#include<queue> 先进先出&#xff08;First In First Out, FIFO&#xff09; 队尾插入&#xff0c;队首删除 queue<int> q; q.push(1); //入队 int qf q.front(); //获取队首元素 int qe q.back(); //获取队尾元素 q.pop(); //出队 q.size(); //大小 q.…

简易中控紫猫插件版(3)压缩包使用说明

1.环境配置脚本运行环境&#xff1a;没什么说的 正常的最新版手机按键 当然还需要 最新的紫猫插件中控运行环境&#xff1a;首先要保证把压缩包的所有php文件都扔到网站的根目录下 必须保证网站的php版本是5.4 不然紫猫插件的php框架会出问题 然后你要知道网站数据库的账号和密…

Java9新特性

Java 8 发布三年多之后&#xff0c;即将快到2017年7月下一个版本发布的日期了。 你可能已经听说过 Java 9 的模块系统&#xff0c;但是这个新版本还有许多其它的更新。 这里有九个令人兴奋的新功能将与 Java 9 一起发布。 1. Java 平台级模块系统 Java 9 的定义功能是一套全新的…

IOS 应用中从竖屏模式强制转换为横屏模式

在 iPhone 应用里&#xff0c;有时我们想强行把显示模式从纵屏改为横屏&#xff08;反之亦然&#xff09;&#xff0c;CocoaChina 会员 “alienblue” 为我们提供了两种思路第一种&#xff1a;通过人为的办法改变view.transform的属性。具体办法&#xff1a;view.transform一般…

2.12 priority_queue

#include<queue> priority_queue与queue的不同&#xff1a;最大元素位于队首 priority_queue<int> pq; pq.push(1); //入队 pq.pop(); //出队 int i pq.top(); //获取队首元素 pq.size(); //大小 pq.empty(); //判空 如果队列元素是结构体&#xff0c;重载&…

vue资料链接

vue 官方api&#xff1a;https://cn.vuejs.org/ vue资源精选&#xff1a;http://vue.awesometiny.com/ vue GitHub地址&#xff1a;https://github.com/vuejs/vue element-ui 官方中文api&#xff1a;http://element-cn.eleme.io/#/zh-CN/component/dropdown swiper中文网&…

Java面试常见算法

在程序员的职业生涯中&#xff0c;算法亦算是一门基础课程&#xff0c;尤其是在面试的时候&#xff0c;很多公司都会让程序员编写一些算法实例&#xff0c;例如快速排序、二叉树查找等等。 本文总结了程序员在代码面试中最常遇到的10大算法类型&#xff0c;想要真正了解这些算法…

高仿人人Android梦想版终极源码发送(转)

经过几个月的努力,终于基本完成了人人API拥有的所有功能,界面采用仿照人人梦想版5.13制作,其中资源文件也采用人人的APK文件资源,完成的功能及知识点如下:1.通过三种动画仿照出人人引导页的放大切换图片的效果。2.通过重写ViewGroup仿照出人人菜单和其他界面的手势滑动切换效果…

HBase 基本Java API

数据库&#xff1a;HBaseConfiguration HBaseAdmin 表&#xff1a;HTable HTableDescriptor 列族&#xff1a;HColumnDescriptor 行列操作&#xff1a;Put Get Scanner HBaseConfiguration: Configuration create() //从classpath中查找hbase-site.xml初始化Configu…

A1075.PAT Judge

题意 输入k个程序的每个程序的满分分数&#xff0c;再输入m条用户提交的记录。按要求进行分数的排序最后输出。是一道结构体的复杂排序 思路分析 首先明确本题的输出要求&#xff1a; 编译失败的提交分数为-1。只有至少成功提交过一次程序(没有编译失败),的用户才会被排序。可以…

android 实现SSL握手协商

Android的私钥和信任证书的格式必须是BKS格式的&#xff0c;通过配置本地JDK&#xff0c;让keytool可以生成BKS格式的私钥和信任证书,java本身没有BouncyCastle密库 ssl通道建立前必须进行协商&#xff08;形成安全的通道--隧道技术&#xff09;。 服务端&#xff1a; View Co…

同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO

IO的方式通常分为几种&#xff0c;同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。 一、BIO 在JDK1.4出来之前&#xff0c;我们建立网络连接的时候采用BIO模式&#xff0c;需要先在服务端启动一个ServerSocket&#xff0c;然后在客户端启动Socket来对服务端进行通信&#x…

1 概述

Unix C TCP/IP 三位一体 Linux天生是网络操作系统 程序员的学习&#xff1a;不断地敲代码&#xff0c;不断地看别人的代码。 Linux两大领域&#xff1a; &#xff08;1&#xff09;服务器 &#xff08;2&#xff09;嵌入式设备 www.netcraft.com 查看网站服务器系统 VMware快…