笔记4
来源:互联网 发布:linux进程间通信方式 编辑:程序博客网 时间:2024/06/06 14:07
1.建立松耦合组件:public class PasswordResetHelper {
private IEmailSender emailSender;
public PasswordResetHelper(IEmailSender emailSenderParam) {
emailSender = emailSenderParam;
}
。。。。(其他方法)
}
IEmailSender为一个接口,不在一开始就限制所创建IEmailSender接口的具体是哪个实例,而是通过一个方法来给其赋值,降低各组件之间的依赖性,方便以后的使用。不这样用还有一个缺点:所赋值的实例是要存在的。否则会出现错误。
2.C#的一些基本特性:
(1)自动属性
public class Product {
private string name;
public string Name {
get { return name; }
set { name = value; }
}
}
可替换成:
public class Product {
public string Name { get; set;}
}
用法为:objectName.Name
如果需要改变属性的实现方式,可用回以一种方法。
(2)扩展方法:
在扩展方法的第一个参数前加上关键字this,第一个参数类型为所扩展类的名字而参数名为实例(该方法可拥有多个参数),如下为扩展ShoppingCart类:
public static class MyExtensionMethods {
public static decimal TotalPrices(this ShoppingCart cartParam) {
decimal total = 0;
foreach (Product prod in cartParam.Products) {
total += prod.Price;
}
return total;
}
}
完成扩展方法后,只要创建一个所扩展类的实例,就可调用该扩展方法,如:
ShoppingCart cart = new ShoppingCart();//未初始化
decimal cartTotal = cart.TotalPrices();
该方法也可用在接口上,用法跟上面的差不多,一旦扩展后,该接口的实例都可调用该扩展方法;
(3)想使用LINQ扩展方法必须先引入命名空间usingSystem.Linq;
(4)部分LINQ扩展方法的延迟性:具有延迟性的LINQ语句只有当结果被枚举(输出)时,才会执行这些语句并且非首次枚举时也会再次执行这些语句。
3.C#的delegate(委托):delegate是一个类似函数指针的东西(可搭载多个对像),
(1)public delegate void Notify(int value); 这里声明了一个Delegate的类型,名为Notify,这种Delegate类型可以搭载返回值为void,有一个int类型参数的函数。
(2)public Notify notifier;这里声明了一个Notify的对象(即,声明了某种Delegate类型的对象)。区分:Notify是类型,notifier是对象。
(3)假设前两步声明都在Test类中,创建一个Test类的实例test,通过使用=,+=,-=来进行赋值增加减少操作。例如
test.notifier = new Test. Notify(test.NonStaticMethod);
test.notifier += new Test. Notify(Test.StaticMethod); (静态方法调用类名,非静态则用实例名)
(4)可通过notifier.Invoke();来运行被搭载的函数;
具体使用方法等上这个博客查看http://www.cnblogs.com/hyddd/archive/2009/07/26/1531538.html
4.Razor的视图布局:如果在视图中将Layout(头部那里)设置为null,则需将<html></html>
<head>.....等标签补上,如果不设为null,视图会自动寻找一个有渲染html.head等页面所需内容的布局;
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- 笔记4
- [笔记] 传智播客-javaWeb笔记(4)
- python笔记4 (练习数据结构笔记)
- Python学习笔记,4Python基础知识笔记
- cs231n笔记之我的笔记4
- C++学习笔记(4)
- AD学习笔记4
- oracel学习笔记4
- leetcode: Binary Tree Inorder Traversal
- Android adb常见问题整理
- 2014-12-04:java发送邮件
- MongoDB的查询
- poj 2002
- 笔记4
- 光棍的yy
- sgu110计算几何
- oracle视频学习(三)
- 数据结构——串的朴素模式和KMP匹配算法
- 【C#】—vb和c#实现对比
- JDK之ReentrantLock,AbstractQueuedSynchronizer源码分析
- 2015年将会大放异彩的九大科技
- Android开发--根据字母快速定位的侧边栏实现