引用另一个类中一个类的属性?

时间:2013-12-20 06:59:43

标签: c# object properties reference

我有一个服务器的C#脚本我正在努力工作,并且我一直收到以下错误:

CS0120: Line 56: An object reference is required for the non-static field, method, or property 'Server.Items.AgelessHouseDeed.Value.get'

以下是相关代码:

public class AgelessHouseTimer : Timer
{
    private HouseSign sign;
    private int m_Value = AgelessHouseDeed.Value;

    public AgelessHouseTimer( HouseSign h ) : base( TimeSpan.FromDays( m_Value ) )
        {
            sign = h;
            Priority = TimerPriority.OneSecond;
        }

    protected override void OnTick()
        {
        sign.RestrictDecay = false;
    }
}

public class AgelessHouseDeed : Item 
{
    private int m_Value;
        [CommandProperty(AccessLevel.GameMaster)]
        public int Value
        {
            get
            {
                return m_Value;
        }
        }

    [Constructable]
    public AgelessHouseDeed() : base( 0x14F0 )
    {
        Weight = 1.0;
        Hue = 1159;
        LootType = LootType.Blessed;
        Name = "An Ageless House Deed ( 30 Days )";
        m_Value = 30;

    }

    [Constructable]
    public AgelessHouseDeed(int value) : base( 0x14F0 )
    {
        Weight = 1.0;
        Hue = 1159;
        LootType = LootType.Blessed;
        Name = "An Ageless House Deed ( 30 Days )";
        m_Value = value;
    }
}

正如您所看到的,我正在尝试访问计时器中可构造的m_Value,以将计时器设置为适当的时间。

2 个答案:

答案 0 :(得分:0)

您可以使用类名直接访问静态字段/属性。但是,如果某些东西是非静态的,则需要首先创建对象的实例,然后调用field / property。您可以阅读静态类和成员MSDN的所有详细信息。

答案 1 :(得分:0)

如果您要访问non-static字段,则需要先创建实例然后再访问。

注意:您只能直接使用static访问classname个字段。

试试这个:

private int m_Value = new AgelessHouseDeed().Value;