当前位置:  编程技术>.net/c#/asp.net
本页文章导读:
    ▪《Effective C#》读书笔记——条目23:理解接口方法和虚方法的区别<使用C#表达设计>        实现和覆写虚方法的区别:接口中声明的成员默认不是虚方法。派生类不能覆写基类中实现的接口成员。接口可以被显式实现,这会使针对该类的公有成员隐藏起来。接口与虚方法的概念.........
    ▪在IIS8中添加WCF支持      今天,将以前做过的基于WCF的Windows Phone应用程序部署到IIS8上,出现了如图-1的错误。根据提示,发现在IIS的 “处理程序映射” (图-2)缺少 ".svc" 的文件处理程序,在网上搜索到了在IIS8添.........
    ▪EF Code First学习笔记 初识Code First      Code First是Entity Framework提供的一种新的编程模型。通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码来生成数据库。下面通过一个简单的示例来了解。 建立一个.........

[1]《Effective C#》读书笔记——条目23:理解接口方法和虚方法的区别<使用C#表达设计>
    来源:    发布时间: 2013-10-28

  实现和覆写虚方法的区别:接口中声明的成员默认不是虚方法。派生类不能覆写基类中实现的接口成员。接口可以被显式实现,这会使针对该类的公有成员隐藏起来。接口与虚方法的概念不同,用法也不同。

 

改变从基类继承的接口在派生类中的行为

  我们来看一个简单的例子:

1 interface IMsg
2 {
3 void Message();
4 }
5 public class MyClass : IMsg
6 {
7 public void Message()
8 {
9 Console.WriteLine("MyClass");
10 }
11 }
12
13 public class MyDerivedClass : MyClass
14 {
15 public new void Message()
16 {
17 Console.WriteLine("MyDerivedClass");
18 }
19 }
20
21 public class EffectiveCSharp
22 {
23 public static void Main(string[] args)
24 {
25 MyDerivedClass d = new MyDerivedClass();
26 d.Message();
27 IMsg m = d as IMsg;
28 m.Message();
29
30 Console.Read();
31 }
32 }

运行输出:

  我们发现,将MyDerivedClass的实例做了转换之后,调用Message()方法变成了该类基类Class的Message()方法——有时候我们常常需要创建接口,然后在基类中实现它们,并且在派生类中更改它们的实现,这时候我们该怎么办呢?这时候有两种办法可供选择。

1.将实现接口的基类中实现的接口成员定义成:virtual,并在派生类中override

1 interface IMsg
2 {
3 void Message();
4 }
5 public class MyClass : IMsg
6 {
7 public virtual void Message()
8 {
9 Console.WriteLine("MyClass");
10 }
11 }
12
13 public class MyDerivedClass : MyClass
14 {
15 public override void Message()
16 {
17 Console.WriteLine("MyDerivedClass");
18 }
19 }
20
21 public class EffectiveCSharp
22 {
23 public static void Main(string[] args)
24 {
25 MyDerivedClass d = new MyDerivedClass();
26 d.Message();
27 IMsg m = d as IMsg;
28 m.Message();
29
30 Console.Read();
31 }
32 }

运行输出:

 

2.将实现接口的基类定义成抽象类,并将实现的接口成员定义为抽象成员

  我们同时可以将派生类的重写方法定义成密封的防止其派生类再重写该方法:

1
    
[2]在IIS8中添加WCF支持
    来源:    发布时间: 2013-10-28

今天,将以前做过的基于WCF的Windows Phone应用程序部署到IIS8上,出现了如图-1的错误。根据提示,发现在IIS的 “处理程序映射” (图-2)缺少 ".svc" 的文件处理程序,在网上搜索到了在IIS8添加WCF服务支持的解决方案,后来又找到了另外一种解决方法。

图-1

图-2

解决方法:

只需在“启用或关闭Windows功能”添加如下功能(红线标注):

之后,会看到在IIS的 “处理程序映射”中就会有:

好了,“在IIS8中添加WCF服务支持”的问题就迎刃而解。

本文链接


    
[3]EF Code First学习笔记 初识Code First
    来源:    发布时间: 2013-10-28

Code First是Entity Framework提供的一种新的编程模型。通过Code First我们可以在还没有建立数据库的情况下就开始编码,然后通过代码来生成数据库。

下面通过一个简单的示例来了解。

 建立一个控制台项目。通过Nuget来获取Entity Framework。

 增加两个模型类:

public class Destination
{
public int DestinationId { get; set; }
public string Name { get; set; }
public string Country { get; set; }
public string Description { get; set; }
public byte[] Photo { get; set; }
public List<Lodging> Lodgings { get; set; }
}

public class Lodging
{
public int LodgingId { get; set; }
public string Name { get; set; }
public string Owner { get; set; }
public bool IsResort { get; set; }
public Destination Destination { get; set; }
}

再新增Context类:

public class BreakAwayContext : DbContext
{
public DbSet<Destination> Destinations { get; set; }
public DbSet<Lodging> Lodgings { get; set; }
}

在Main方法中加入下列代码:

static void Main(string[] args)
{
var d = DateTime.Now.Date.ToString("yyyyMM");
var destination = new Destination
{
Country = "Indonesia",
Description = "EcoTourism at its best in exquisite Bali",
Name = "Bali"
};
using (var context = new BreakAwayContext())
{
context.Destinations.Add(destination);
context.SaveChanges();
}
Console.WriteLine("OK");
}

执行成功后打开数据库,默认为.\SQLEXPRESS。

我们可以看到,新增了一个名为BreakAway.BreakAwayContext的数据库。

[Destinations]表里面也插入了我们刚增加的记录:

很COOL吧,Code First就是这么神奇。这里我们代码里面什么也没设置,都是Code First默认生成的。通过生成的数据库库我们来了解一下这些默认设置。

数据库名:当没有显示设置数据连接的时候,默认的数据库是:.\SQLEXPRESS。如果本地没有SQLEXPRESS,EF会尝试LocalDb ((localdb)\v11.0) .\SQLEXPRESS

这个数据库包含在VS2012中。数据库的名称一般是DbContext的“命名空间.类名”,本例中是BreakAway.BreakAwayContext

表名:表名默认为模型类名的复数形式,并且每个表都使用dbo构架创建。这里生成的就是dbo.Lodgings.

主键:Code First会默认将以类似Id结尾来命名的属性当作主键,如ID,Id,本例中的DestinationId都自动设置为主键。如果该属性是int类型,Code First会在数据库中默认将该列设置为自增长。

数据类型:在SQL Server中,字符串默认映射成nvarchar(max),byte[]映射成varbinary(max),bool映射成bit,decimal映射成decimal(18, 2),float映射成float。同时因为bool,decimal,float等是值类型,不能为给他们分配Null值。所生成的数据库会要求对应的列非空。如Lodgings表中的IsResort

外键:Code First检测到模型间有一对多的关系,会自动在相应表中生成外键。在这时,Code First检测到Destination类中有一个List<Lodging> Lodgings属性,而在Lodging类中有一个Destination Destination属性,说明Destination与Lodging是一对多的关系,因而在Lodgings表中生成了外键Destination_DestinationId保存对应的DestinationId。外键的命名默认是导航属性名(这里是Destination)_对应主表的主键(这里是DestinationId)。

本文链接


    
最新技术文章:
移动开发 iis7站长之家
▪C#实现对Json字符串处理实例
▪Winform实现抓取web页面内容的方法
▪Winform实现将网页生成图片的方法
▪C#控制台程序中处理2个关闭事件的代码实例
▪WinForm实现同时让两个窗体有激活效果的特效...
▪WinForm实现拦截窗体上各个部位的点击特效实...
▪用C#的params关键字实现方法形参个数可变示例
▪C#判断某程序是否运行的方法
▪C#验证码识别基础方法实例分析
▪C#通过WIN32 API实现嵌入程序窗体
▪C#实现获取鼠标句柄的方法
▪C#事件处理和委托event delegate实例简述
▪C#获取程序文件相关信息的方法
▪C#中的除法运算符与VB.NET中的除法运算符
▪ASP.NET MVC 5使用X.PagedList.Mvc进行分页教程(PagedLi...
▪Base64编码解码原理及C#编程实例
▪C#实现的优酷真实视频地址解析功能(2014新算...
▪C#和SQL实现的字符串相似度计算代码分享
▪C#使用Word中的内置对话框实例
▪C#反射之基础应用实例总结
▪C#生成单页静态页简单实例
▪C#实现SMTP邮件发送程序实例
▪C#实现随鼠标移动窗体实例
▪C#使用GDI+创建缩略图实例
▪C#实现通过模板自动创建Word文档的方法
▪C#中Response.Write常见问题汇总
▪C#中多态、重载、重写区别分析
▪WinFrom中label背景透明的实现方法
▪C#中out保留字用法实例分析
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3