1.程序集加载机制
2.如何生成强签名程序集,把程序集放入到GAC中有什么好处,编译时如何制定版本.延迟签名有什么作用
3.string 和byte[]对象如何进行转换
4.如何自定义序列化和反序列化
5..NET提供哪些类型实现反射
6.c#多线程编程如何解决资源冲突问题, 解决中注意什么
7.vs2005中非创建控件的线程能不能直接调控件,不能如何处理
8.什么是套接字9.编码题: 自己编码实现泛型集合,要求实现foreach功能,及添加,删除,等.
2.如何生成强签名程序集,把程序集放入到GAC中有什么好处,编译时如何制定版本.延迟签名有什么作用
3.string 和byte[]对象如何进行转换
4.如何自定义序列化和反序列化
5..NET提供哪些类型实现反射
6.c#多线程编程如何解决资源冲突问题, 解决中注意什么
7.vs2005中非创建控件的线程能不能直接调控件,不能如何处理
8.什么是套接字9.编码题: 自己编码实现泛型集合,要求实现foreach功能,及添加,删除,等.
1、隐式加载
没有被显式加载但被引用的程序集,CLR会按照全局程序集缓存(GAC)、工作目录(应用程序所在目录)以及私有路径目录的顺序来寻找并加载。
2、AppDomain.Load 方法
将一个程序集加载到一个特定的程序域中,主要用来供非托管代码调用。
3、Assembly.Load方法
通过接受一个程序集标识来加载程序集。如果是强命名程序集,则标识包括程序集名称、版本、语言文化、以及公有密钥标记,Load方法将导致CLR按照隐式加载的策略寻找并加载程序集。弱命名程序集则只是一个不带文件扩展名的程序集的名称,CLR不会到GAC中查找,如果没有指定私有目录,则在工作目录查找,如Assembly.Load("Math")。其中私有目录的定义可以在配置文件中指定。
第二题:1.生成密钥
2.使用密钥
把密钥文件放到解决方案的根目录下,打开解决方案,修改要强命名项目的AssemblyInfo.cs文件
[assembly: AssemblyVersion("1.0.0.1")] //强命名程序集一般都指定版本号
[assembly: AssemblyDelaySign(false)] //是否要延迟签名 false:不延迟签名 true:延迟签名
[assembly: AssemblyKeyFile("mykey.key")] //密钥文件的路径
3.生成强名称程序集
4.部署强命名程序集到GAC中
GAC作用:作用是可以存放一些有很多程序都要用到的公共Assembly,例如System.Data、System.Windows.Forms等等。这样,很多程序就可以从GAC里面取得Assembly,而不需要再把所有要用到的Assembly都拷贝到应用程序的执行目录下面。
第三题:
string str = "1123";
byte[] bytes = new byte[str.Length];
char[] chares = str.ToCharArray();
char c = new char();
for (int i = 0; i < str.Length; i++)
{
c = chares[i];
byte b = new byte();
Byte.TryParse(c.ToString(), out b);
bytes[i] = b;
}
第五题:
System.Type类
第九题:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Lesn003_GenericTypeApp
{
public class MyList <T>:IEnumerable <T>
{
private readonly List <T> mylist = new List <T>();
public MyList()
{
mylist = new List <T>();
}
public MyList(IEnumerable <T> coll)
{
mylist = new List <T>(coll);
}
public int Count
{
get
{
return mylist.Count;
}
}
public T this[int index]
{
get
{
if (index >= 0 && mylist.Count > index)
return mylist[index];
return default(T);
}
set
{
mylist[index] = value;
}
}
public void Add(T item)
{
mylist.Add(item);
}
public bool Remove(T item)
{
return mylist.Remove(item);
}
public void RemoveAt(int index)
{
mylist.RemoveAt(index);
}
public MyList <T> GetRange(int start, int count)
{
return new MyList <T>(mylist.GetRange(start, count));
}
public T Find(Predicate <T> math)
{
return mylist.Find(math);
}
public MyList <T> FindAll(Predicate <T> math)
{
return new MyList <T>(mylist.FindAll(math));
}
public void Insert(int index, T item)
{
mylist.Insert(index, item);
}
public T[] ToArray()
{
return mylist.ToArray();
}
public List <T> ToList()
{
return mylist;
}
#region IEnumerable <T> 成员 public IEnumerator <T> GetEnumerator()
{
foreach (T item in mylist)
yield return item;
} #endregion #region IEnumerable 成员 System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
{
return GetEnumerator();
} #endregion
}
}
注:不同版本的相同程序集还可以同时存在于GAC中
通过嵌入公钥并使用私钥签名,可以生成强名称(strong name)的程序集。强名称程序集由4部分进行标识:名称、版本、区域性和公钥。
强名称程序集可以部署到GAC中。GAC指全局程序集缓存,这是一个公共目录,放在此处的程序集可以被本机任意一个程序所引用
不错