2014-01-02 7 views
0
Circle2.IsSensor = Circle1.IsSensor; 

Свойство или индексатор «FarseerPhysics.Dynamics.Body.IsSensor» не может быть использована в этом контексте потому что ему не хватает доступа для доступаСвойство или индексатор «FarseerPhysics.Dynamics.Body.IsSensor» не может быть использован в этом контексте, поскольку ему не хватает ГЭТ аксессор

Я всегда получаю это сообщение об ошибке. Что не так? Что я должен изменить?

ответ

0

Потому что это свойство записи. Возможно, что-то вроде

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

Подробнее о аксессорах here. Однако согласно design guidelines, что FxCOP использует дизайн, не следует допускать его. И если у вас есть доступ к коду, подумайте об изменении дизайна.

Получите доступ к аксессуарам, чтобы обеспечить доступ к доступу к объекту и установить доступ для доступа к ним. Хотя это приемлемо и часто необходимо иметь свойство только для чтения, в руководящих принципах проектирования запрещается использование свойств только для записи. Это связано с тем, что разрешение пользователю установить значение, а затем не позволяет пользователю просматривать значение, не обеспечивает никакой безопасности. Кроме того, без доступа к чтению состояние общих объектов не может быть просмотрено, что ограничивает их полезность.

Как устранить нарушения Чтобы исправить нарушение этого правила, добавьте в него объект доступа . В качестве альтернативы, если необходимо использовать свойство записи , рассмотрите возможность преобразования этого свойства в метод .

+0

Я попробовал ваш код, но он не работает. Я не знаю, как использовать get, установить с Farseer. – Leo

+0

@ Leo Я просто дал вам образец кода. Я имел в виду, что, поскольку в вашей собственности нет никакого геттера, поэтому вы не можете использовать его – Ehsan

0

кажется, нужно ПОЛУЧИТЬ accesor:

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