这对你来说可能听起来很疯狂,但是我需要一个Nullable<T>
(其中T是一个结构)来为它的Value属性返回一个不同的类型。
规则是Nullable<T>
的属性HasValue为真,Value将始终返回不同指定类型的对象(然后是其自身)。
我可能会想到这一点,但是这个单元测试显示了我想要做的事情。
public struct Bob
{
...
}
[TestClass]
public class BobTest
{
[TestMethod]
public void Test_Nullable_Bob_Returns_Joe()
{
Joe joe = null;
Bob? bob;
var bobHasValue = bob.HasValue; // returns if Bob is null
if(bobHasValue)
joe = bob.Value; //Bob returns a Joe
}
}
答案 0 :(得分:3)
您是否在寻找user-defined implicit conversion?如果是,您可以在Bob上定义一个:
class Bob {
static public implicit operator Joe(Bob theBob) {
// return whatever here...
}
}
如果由于您无权更改Bob
,而无法执行此操作,则可以考虑编写扩展方法:
public static class BobExt {
public static Joe ToJoe( this Bob theBob ) {
return whatever; // your logic here...
}
}
if(bobHasValue)
joe = bob.Value.ToJoe(); // Bob converted to a Joe