笔记4

本文介绍了C#中的松耦合组件设计、自动属性、扩展方法等特性,并通过实例展示了如何使用这些特性来提高代码的灵活性和可维护性。此外,还详细解释了委托的使用方法及视图布局在Razor中的应用。

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等页面所需内容的布局;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值