c# - 想直接从对象访问类属性(字段)

标签 c#

我编写了一个类,我想将其用作全局数据接口(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 );
    }
}

希望这对您有所帮助。

关于c# - 想直接从对象访问类属性(字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51574295/

相关文章:

c# - 在 C# 中修改集合的模式是什么

c# - 存储更新、插入或删除语句影响了意外数量的行 (0),

c# - Access DB 说我的日期时间错误

C# - 获取 HTTP 服务器消息

c# - 当参数值作为接口(interface)传递时,如何解析泛型参数的类类型?

c# - 如何监听模拟对象的事件?

c# - 如何更改超时查询

c# - WPF 和 Silverlight 应用程序有什么区别?

c# - 从我的 Web API 调用第 3 方 Web API 时 Web 服务器挂起

c# - 跨表分区的事务性插入