Chr*_*nes 1 c# generics casting
我在基类中有一个类似于以下的泛型方法:
protected bool TryConvertTo<TIn, TOut>(TIn objIn, out TOut objOut)
where TIn : MyObjectBase
where TOut : MyObjectBase
{
objOut = objIn is TOut ? (TOut) (object) objIn : default (TOut);
return !ReferenceEquals(objOut, default (TOut));
}
Run Code Online (Sandbox Code Playgroud)
假设我在必要时进行空检查并相应地处理任何应用程序异常.将objIn"双重投射"到对象再到TOut是不好的做法?如果这是不好的做法,是否有任何技术原因,或者仅仅是整体设计问题的反映?
鉴于我的用例,我认为用法是合适的,但由于我通常不使用这样的表达式,我认为获得社群的意见可能是安全的.
鉴于你已经限制它们从一个特定的类派生(假设MyObjectBase确实是一个类),为什么不使用:
protected bool TryConvertTo<TIn, TOut>(TIn objIn, out TOut objOut)
where TIn : MyObjectBase
where TOut : MyObjectBase
{
objOut = objIn as TOut;
return objOut != null;
}
Run Code Online (Sandbox Code Playgroud)
(我假设没有自定义转换运算符或==/ !=重载MyObjectBase.)
另一方面,这首先想要做一件相当奇怪的事情......你确定这是一个合适的设计,撇开实施吗?
| 归档时间: |
|
| 查看次数: |
195 次 |
| 最近记录: |