【发布时间】:2017-04-28 23:35:58
【问题描述】:
Circle2.IsSensor = Circle1.IsSensor;
属性或索引器“FarseerPhysics.Dynamics.Body.IsSensor”不能在此上下文中使用,因为它缺少 get 访问器
我总是收到此错误消息。怎么了?我应该改变什么?
【问题讨论】:
Circle2.IsSensor = Circle1.IsSensor;
属性或索引器“FarseerPhysics.Dynamics.Body.IsSensor”不能在此上下文中使用,因为它缺少 get 访问器
我总是收到此错误消息。怎么了?我应该改变什么?
【问题讨论】:
因为它是只写属性。大概是这样的
private static bool _isSensor;
public static bool IsSensor
{
set
{
_isSensor= value;
}
}
阅读更多关于访问器的信息here。但是根据design guidelines FxCOP 使用的设计不应该允许它。如果您可以访问代码,请考虑更改设计。
Get 访问器提供对属性的读取访问权限,而 set 访问器提供写入访问权限。尽管拥有只读属性是可以接受的并且通常是必需的,但设计指南禁止使用只写属性。这是因为让用户设置一个值然后阻止用户查看该值不会提供任何安全性。此外,如果没有读取权限,则无法查看共享对象的状态,这限制了它们的实用性。
如何解决违规问题要解决违反此规则的问题,请添加 get 财产的访问者。或者,如果一个行为 只写属性是必需的,请考虑将此属性转换为 一种方法。
【讨论】:
似乎需要一个获取访问器:
private static bool _isSensor;
public static bool IsSensor
{
set
{
_isSensor= value;
}
get
{
return _isSensor;
}
}
【讨论】: