[英]Generic c# casting
interface ISample
{
int Id { get; set; }
}
public class MyClass : ISample
{
public int Id
{
get;
set;
}
public string Name { get; set; }
}
上面是一个实现接口ISample的类。 我使用泛型添加了以下方法,将给定类型的对象转换为另一种类型。
private TResult Sample<TSource, TResult>(TSource source)
where TSource : TResult
{
return (TResult)(source);
}
使用泛型,我如何实现与给定ISample对象相同的反向操作,我想将其转换回MyClass对象,其中ISample是TSource,TResult是MyClass,其中TResult实现TSource。
您只需要从
where TSource : TResult
至
where TResult : TSource
以可能看起来像的代码结束
private TResult ToInterface<TSource, TResult>(TSource source) where TSource : TResult
{
return source;
}
private TResult FromInterface<TSource, TResult>(TSource source) where TResult : TSource
{
return source as TResult;
}
请注意,如果'source'参数不是TResult类型或不继承自TResult,则FromInterface函数将引发InvalidCastException。
编辑:
请参阅Lajos Arpad的答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.