我想创建一个商业实体。我想存储每个属性的附加信息
e.g。
Public Class BE
{
private string _fundCity;
public string FUND_CITY
{
get { return _fundCity; }
set { _fundCity = value; }
}
}
对于FUND_CITY,我想在BE中存储“StartOffSet”和“EndOffSet”值。 可以帮助一些人。
答案 0 :(得分:1)
如果你想拥有与FUND_CITY
直接相关的属性,那么通常你会把它作为一个对象,并将属性添加到新对象中,你仍然可以将它存储在你的对象中{ {1}}就像你现在一样。
如果您希望BE
保留为字符串,则必须在FUND_CITY
课程中添加StartOffset
和EndOffset
作为属性,就像使用FUND_CITY一样。我会给你一个例子,但你没有指定这两个属性是什么类型。
听起来你需要的是一个带有泛型的包装类。如果您想在BE
上跟踪{strong>每个属性的StartOffset
和EndOffset
,那么首先要创建一个将用于BE中每个属性的泛型类:< / p>
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; }
}
用于保存(或 wrap )属性的实际值。然后,您的班级PropertyValue
会更改为:
BE
然后您可以像这样使用它:
public class BE
{
public MyProperty<string> FUND_CITY { get; set; }
public MyProperty<int> SomeOtherProperty { get; set; }
}
如果你想更进一步并保留这些列表,那么你可以使用内置的通用List<T> type,但是你有一个小问题:List&lt; T&gt;希望其所有内容属于同一类型。您可以通过使用基类或仅通过在List&lt; T&gt;中转换所有内容来绕过它。输入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();
}
}
。以下是使用基类的示例,它与上面的代码相比有一点变化:
object
答案 1 :(得分:0)
您需要创建一个单独的类(请注意,我的语法是使用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; }
}