0

目标是拥有一个具有 Unit 属性的变量,可以通过以下方式访问:

Params MyParams;    

MyParams.Diae = 100.0;
MyParams.Diae.Unit = "kg";

理想情况下,变量 Diae 是 Class Params 的成员,并且应该从类 IParameter 继承 Unit 属性:

internal class IParameter
{
    string unit;
    internal string Unit { get; set; }

    internal IParameter()
    {
        unit = "";
    }

}

如何声明 Diae 变量?这是预期声明的准代码片段:

namespace SomeCode
{
    internal class Params
    {
        double diae;

        internal class Diae:IParameter
        {
            get { return diae; }
            set { diae = value; }
        }
    }
}
4

2 回答 2

0

你不能完全按照你的意愿去做——你不能向现有的类型添加额外的属性double,所以你必须Diae返回一个单独的类。像这样的东西:

internal class ParamWithUnit
{
  public string Unit { get; set; }
  public double Value { get; set; }
}

internal class Params
{
  private ParamWithUnit diae = new ParamWithUnit();

  public ParamWithUnit Diae 
  {
    get { return this.diae; }
  }
}

然后你可以这样做:

Params MyParams = new Params();    

MyParams.Diae.Value = 100.0;
MyParams.Diae.Unit = "kg";
于 2013-05-06T16:24:10.603 回答
-1

您不会 [想要] 分配一个 double ,Diae同时仍然允许它拥有一个 property Unit。(你可以通过隐式转换或类似的方法来解决这个问题,但我不鼓励你这样做。)

最好的选择是创建一个这样的类Measurement,它将同时具有 aValue和 aUnit属性:

public class Measurement
{
    public double Value {get;set;}
    public string Unit {get;set;}
}

然后Diae可以是那种类型:

internal class Params
{
    public Measurement Diae {get;private set}
    public Params()
    {
        Diae = new Measurement();
    }
}

现在你可以这样做:

Params MyParams = new Params();    

MyParams.Diae.Value = 100.0;
MyParams.Diae.Unit = "kg";
于 2013-05-06T16:23:52.243 回答