(2)创建强命名类库,引用接口类库并定义实现以上接口的类:
public classSampleClass: ISampleInterface
{
private stringp_UserInput;
public stringUserInput { get{ return p_UserInput; } }
public voidGetUserInput()
{
Console.WriteLine("Please enter a value:");
p_UserInput = Console.ReadLine();
}
}
{
private stringp_UserInput;
public stringUserInput { get{ return p_UserInput; } }
public voidGetUserInput()
{
Console.WriteLine("Please enter a value:");
p_UserInput = Console.ReadLine();
}
}
(3)创建客户端应用程序,引用接口并使用反射的方法动态创建类型执行相应操作:
class Program
{
static void Main(string[] args)
{
Assembly sampleAssembly = Assembly.Load("TypeEquivalenceRuntime");
ISampleInterface sampleClass =
(ISampleInterface)sampleAssembly.CreateInstance("TypeEquivalenceRuntime.SampleClass");
sampleClass.GetUserInput();
Console.WriteLine(sampleClass.UserInput);
Console.WriteLine(sampleAssembly.GetName().Version.ToString());
Console.ReadLine();
}
}
{
static void Main(string[] args)
{
Assembly sampleAssembly = Assembly.Load("TypeEquivalenceRuntime");
ISampleInterface sampleClass =
(ISampleInterface)sampleAssembly.CreateInstance("TypeEquivalenceRuntime.SampleClass");
sampleClass.GetUserInput();
Console.WriteLine(sampleClass.UserInput);
Console.WriteLine(sampleAssembly.GetName().Version.ToString());
Console.ReadLine();
}
}
(4)修改实现了接口在的客户端类,增加新的方法并修改程序集版本号和文件版本号为2.0.0.0:
public DateTime GetDate()
{
return DateTime.Now;
}
{
return DateTime.Now;
}
(5)再次执行客户端程序,观察不同(客户端将输出新的版本号)。
在.NET全部使用托管代码创建的程序集自动会识别更新,也就是说不需要使用额外的属性定义,直接创建接口、实现接口类库和客户端类(或者没有接口直接创建类库在客户端引用),在类库更新后复制到客户端引用的位置,客户端会自动检测到该更新,这也是.NET程序集为开发人员带来的好处。但是使用类型等价支持的作用体现在什么地方,我认为还是方便了COM API的访问,因为COM可能是使用其他语言编写的,没有办法做到像.NET程序集那样自动感应版本变化,个人意见,期望高手解答。
3. 总结
Visual C#中提供了动态类型、命名参数、可选参数和类型等价支持,为编程带来便利,对于访问COM API来说更方便了。而且微软多次提到了诸如Office之类的文字,是不是意味着微软在不断的鼓励程序员不断开发出其于Office的一些应用,亦或是现在其于Office的应用在不断增加,还是应用程序中与Office的交互在不断增加,通过增强的特性使这些工作更方便,来巩固微软件地位?