关于泛型约束的问题
/// <summary>
/// 通过对象的序列化实现对象的深拷贝
/// </summary>
/// <typeparam name="T">对象类型</typeparam>
/// <param name="RealObject">原始对象</param>
/// <returns>原始对象的深拷贝</returns>
public static T CloneObj<T>(T RealObject)
where T : BaseElement
{
using (Stream objectStream = new MemoryStream())
{
//利用 System.Runtime.Serialization序列化与反序列化完成引用对象的复制
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(objectStream, RealObject);
objectStream.Seek(0, SeekOrigin.Begin);
return (formatter.Deserialize(objectStream) as T);
}
}
这个也能通过编译
[解决办法]
泛型其实是设计时的概念,编译时的检查是泛型的优点之一。
所以,如果调用的地方传递过来的类型不符合那么编译就会报错,不会到运行时的。
[解决办法]
不需要
我装了resharper,要是加了反而会是一个warning (Redundant cast)
[解决办法]
相信我,不用!我经常用这东西
[解决办法]
参考:http://www.cnblogs.com/zhili/archive/2012/11/08/Generic_2.html