Как прикрепить дополнительную информацию с Свойством класса в .net - PullRequest
0 голосов
/ 13 ноября 2011

Я хочу создать субъект предпринимательства. Я хочу хранить дополнительную информацию с каждым свойством

например.

    Public Class BE
    {
        private string _fundCity;

        public string FUND_CITY 
        {
            get { return _fundCity; }
            set { _fundCity = value; }
        }
    }

Для FUND_CITY я хочу сохранить значения «StartOffSet» и «EndOffSet» в BE. Может ли кто-нибудь помочь.

Ответы [ 2 ]

1 голос
/ 13 ноября 2011

Если вы хотите иметь свойства, которые имеют непосредственное отношение к FUND_CITY, то обычно вы делаете его самостоятельным объектом и добавляете свойства в новый объект, и вы все равно можете сохранить его в своем объекте BEкак и сейчас.

Если вы хотите, чтобы FUND_CITY оставался в виде строки, то вы должны добавить StartOffset и EndOffset в качестве свойств класса BE, как вы это сделали с FUND_CITY.Я бы привел вам пример, но вы не указали, к каким типам относятся эти два свойства.

РЕДАКТИРОВАТЬ:

Похоже, вам нужен класс-обертка с набором обобщений.Если вы хотите отслеживать StartOffset и EndOffset для каждого свойства в BE, то сначала создайте универсальный класс, который будет использоваться для каждого свойства в BE:

public class MyProperty<T> 
{
    public MyProperty(T propertyValue)
    {
        PropertyValue = propertyValue;
    }

    public int StartOffset { get; set; }
    public int EndOffset { get; set; }

    public T PropertyValue { get; set; }
}

PropertyValue используется для хранения (или wrap ) фактической стоимости имущества.Ваш класс BE затем изменится и будет выглядеть следующим образом:

public class BE
{
    public MyProperty<string> FUND_CITY { get; set; }

    public MyProperty<int> SomeOtherProperty { get; set; }
}

, затем вы можете использовать его следующим образом:

class Program
{
    static void Main(string[] args)
    {

        var myBE = new BE();
        myBE.FUND_CITY = new MyProperty<string>("some random string value") { StartOffset = 0, EndOffset = 10 };
        myBE.SomeOtherProperty = new MyProperty<int>(999);

        Console.ReadKey();
    }
}

Если вы хотите пойти еще дальше и сохранить списокэти, тогда вы можете использовать встроенный универсальный List type , но тогда у вас есть небольшая проблема: List хочет, чтобы все его содержимое было одного типа.Вы можете обойти это либо с помощью базового класса, либо просто приведя все в Список к типу object.Вот пример использования базового класса, он немного отличается от кода выше:

public class MyPropertyBase
{
    public int StartOffset { get; set; }
    public int EndOffset { get; set; }
}

public class MyProperty<T> : MyPropertyBase
{
    public MyProperty(T propertyValue)
    {
        PropertyValue = propertyValue;
    }

    public T PropertyValue { get; set; }
}

public class BE
{
    public MyProperty<string> FUND_CITY { get; set; }

    public MyProperty<int> SomeOtherProperty { get; set; }

    public List<MyPropertyBase> MyDataPoints { get; set; }
}
0 голосов
/ 13 ноября 2011

Вам нужно создать отдельный класс (обратите внимание, что мой синтаксис использует свойства автоматического установщика VS2010; если вы используете более раннюю версию, вам нужно будет создать свойства старомодным способом:

public class FundCity
{
  public string Name {get; set;}
  public int StartOffSet {get; set;}
  public int EndOffSet{get; set;}

    public override string ToString()
    {
        return this.Name;
    }
}

public class BE
{
private FundCity _fundCity;
 public FundCity FUND_CITY 
        {
            get
            {
              return _fundCity;
            }
             set 
            {
               _fundCity=value;
            }
        }
}

Обновление с помощью общего решения

public class DataPoint<T>
{
    public T value {get; set; }

    public int StartOffset {get; set; }
    public int EndOffset { get; set; }

    public override string ToString()
    {
        return value.ToString();
    }
}

public class BE
{
    public DataPoint<String> FUND_CITY { get; set; }
}
...