有没有办法在C#中的类中实现get方法?

时间:2017-02-24 02:50:26

标签: c# .net

我想知道是否有任何方法可以在类中实现get方法?

public class Element: IWebElement 
{
    IWebElement realElement;

    //Question point is this get{}
    //Everytime I access the instance of this class this get would be called
    get
    {

        //This 'realElement' is not present yet
        //So I cannot initialize it
        //But when the properties of this class are accessed
        //I'm telling the get method that it's time to initialize 'realElement'
        realElement = webDriver.FindElement(...);

        Visible = element.Visible;

        return this;
    }

    public bool Visible {get; set;}


}

public class AnotherClass()
{
    public void AccessElement()
    {
        Element element = new Element();
        if(element.Visible) // At this point the 'element'
        { 
        }
    }
}

使用方法: 我不能用自己的get来初始化每个属性,因为它们太多了

2 个答案:

答案 0 :(得分:1)

在我的旧答案中添加了这个新答案,因为我试图回答你原来的代码,但现在却完全不同了。啧。

  

用法:我不能用自己的get初始化每个属性,因为   他们太多了

所以,这实际上是而不是你通常使用get的方法。 Get主要用于访问私有方法,或者使用一些逻辑,通常用于数据绑定,例如MVVM等。

我认为你的措辞不准确。你说

  

每次我访问此类的实例时,此get都将被称为

但根据你的代码,你的意思是“每次我实例化一个类”。你真正需要的唯一东西是构造函数。

public class Element: IWebElement 
{
    IWebElement realElement;
    public bool Visible {get; set;}
    public Element()
    {
        realElement = webDriver.FindElement(...);
        Visible = element.Visible;
    } 
}

旧回答:

您可能正在考虑Singleton模式

编辑:这最初回答了原始问题的代码,如下所示。

public class Element()
{
 //Question point is this get{}
 //Everytime I access the instance of this class this get would be called
 get{

   return this;

 }

 public string AnyProperty {get; set;}

}

public class AnotherClass()
{

 public void AccessElement()
 {
  Element element = new Element();
  element.AnyProperty = ""; 
 }

}

答案 1 :(得分:0)

您可以使用构造函数,因此每次创建对象实例时都会调用它。

public class Element()
{
    public Element(){
             AnyProperty = ""; //some value initialize
      }
}