开发者

Is it possible to override Value on a nullable struct, to return a diffrent type?

开发者 https://www.devze.com 2022-12-26 13:48 出处:网络
This might sound crazy to you, but I need a Nullable<T> (where T is a struct) to return a different type for it\'s Value property.

This might sound crazy to you, but I need a Nullable<T> (where T is a struct) to return a different type for it's Value property.

Rules being if Nullable<T>'s Property HasValue is true, Value will always return an object of a different specified type (then itself).

I might be over thinking this, but this unit test bellow kind of shows what I want to do.

    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 Jo开发者_StackOverflow中文版e
            }
    }


Are you look for a user-defined implicit conversion? If so, you can define one on Bob:

class Bob {
    static public implicit operator Joe(Bob theBob) {
       // return whatever here...
    }
}

If you can't do this because you don't have access to change Bob, you could always consider writing an extension method:

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
0

精彩评论

暂无评论...
验证码 换一张
取 消