【问题标题】:The property or indexer 'FarseerPhysics.Dynamics.Body.IsSensor' cannot be used in this context because it lacks the get accessor无法在此上下文中使用属性或索引器“FarseerPhysics.Dynamics.Body.IsSensor”,因为它缺少 get 访问器
【发布时间】:2017-04-28 23:35:58
【问题描述】:
Circle2.IsSensor = Circle1.IsSensor;

属性或索引器“FarseerPhysics.Dynamics.Body.IsSensor”不能在此上下文中使用,因为它缺少 get 访问器

我总是收到此错误消息。怎么了?我应该改变什么?

【问题讨论】:

    标签: c# xna farseer


    【解决方案1】:

    因为它是只写属性。大概是这样的

    private static bool _isSensor;
    public static bool IsSensor
    {
       set 
       {
            _isSensor= value;
       }
    }
    

    阅读更多关于访问器的信息here。但是根据design guidelines FxCOP 使用的设计不应该允许它。如果您可以访问代码,请考虑更改设计。

    Get 访问器提供对属性的读取访问权限,而 set 访问器提供写入访问权限。尽管拥有只读属性是可以接受的并且通常是必需的,但设计指南禁止使用只写属性。这是因为让用户设置一个值然后阻止用户查看该值不会提供任何安全性。此外,如果没有读取权限,则无法查看共享对象的状态,这限制了它们的实用性。

    如何解决违规问题要解决违反此规则的问题,请添加 get 财产的访问者。或者,如果一个行为 只写属性是必需的,请考虑将此属性转换为 一种方法。

    【讨论】:

    • 我试过你的代码,但它不起作用。我不知道如何使用 get;set 和 Farseer。
    • @Leo 我刚刚给了你示例代码。我的意思是,由于您的财产中没有任何吸气剂,因此您不能使用它
    【解决方案2】:

    似乎需要一个获取访问器:

    private static bool _isSensor;
    public static bool IsSensor
    {
       set 
       {
            _isSensor= value;
       }
       get
       {
            return _isSensor;
       }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-05
      • 1970-01-01
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2022-12-13
      • 1970-01-01
      相关资源
      最近更新 更多