我编写了一个类,我想将其用作全局数据接口(interface),以便与来自基于 Web 的 API 的数据进行交互。因此,该类能够接受几乎任何基类型的值,并且就好像它是该基类型一样工作。
在幕后,我将对象的“值”存储为字符串,并且在大多数情况下,该类充当 String 对象的克隆,除了它可以尝试模拟任何其他基类 -语境。
虽然这有点多余,但我的问题/问题是,我怎样才能使这种类型的字段能够直接与其交互,而不是通过访问器?
例如:
public class PolyVar
{
protected string _myValue;
public PolyVar() { this._myValue = ""; }
public PolyVar(string value) { this._myValue = value; }
public string Value { get => this._myValue; set => this._myValue = value; }
}
然后,在项目的某处我想这样做:
string temp = "";
PolyVar work = ""; // in lieu of "PolyVar work = new PolyVar();"
temp = "Some string data here. " + work; // using just "work" instead of "work.Value"
那么你能否以访问/修改的方式构造类它的属性之一(在本例中为“_myValue”)是否可以直接通过类本身来代替必须使用访问器? (因为基类已经全部支持了?)
您必须 1) 创建从字符串到 PolyVar 的隐式转换,以及 2) 覆盖 ToString()
以便在需要时将其正确转换为简单字符串。
public class PolyVar {
protected string _myValue;
public PolyVar() { this._myValue = ""; }
public PolyVar(string value) { this._myValue = value; }
public string Value { get { return this._myValue; } set { this._myValue = value; } }
// Override ToString() so "" + polyVar1 is correctly converted.
public override string ToString()
{
return this.Value;
}
// Create an implicit cast operator from string to PolyVar
public static implicit operator PolyVar(string x)
{
return new PolyVar( x );
}
}
class Ppal {
static void Main()
{
PolyVar work = "data"; // in lieu of "PolyVar work = new PolyVar();"
string temp = "Some string data here: " + work;
System.Console.WriteLine( temp );
}
}
希望这对您有所帮助。
我是一名优秀的程序员,十分优秀!