我有一个有点简单的包装类有一点问题。
它看起来像这样:
public class Wrapper<T>
{
private T _value;
public Wrapper<T>(T value)
{
_value = value;
}
public static implicit operator Wrapper<T>(T value)
{
return new Wrapper<T>(value);
}
public static implicit operator T(Wrapper<T> value)
{
return value._value;
}
}
我已经覆盖了从和到 T 的隐式转换器,所以它的行为几乎就像 T 本身的一个实例。
例如
Wrapper<int> foo = 42;
但是,在将 Wrapper 的一个实例分配给另一个时,我遇到了一个小问题,因为我只想分配第二个 Wrapper 类的值。
所以现在,我必须这样做:
Wrapper<int> foo = 42;
Wrapper<int> bar = (int)foo;
或者通过属性公开 _value。
但是,由于这是在库中,并且我不希望用户依赖于记住这一点,你们知道我如何模仿覆盖赋值运算符吗?
仅更改指针的问题(就像将类实例分配给另一个时所做的那样)是我有一个指向这些 Wrapper 对象的指针字典,因此我不能一直更改它们,因为字典会停止然后匹配。
我可以看看这是否有点令人困惑,所以如果我遗漏了任何重要的内容,请随时询问:-)