我创建了一个库类,其中......
public class CircuitLibrary
{
// Fields, properties, methods, etc.
...
// Nested classes.
public class Sensor
{
// Enums.
public enum Sensors { Sensor1, Sensor2, Sensor3, ... };
...
}
public class SerialCommands
{
// Fields, properties, etc.
...
// Nested classes.
public class SensorSettingsCommands
{
// Fields, properties, etc.
...
public void SomeMethod()
{
...
if( Sensor.Sensors.IsOn ) // Doesn't like this. OK if I change to CircuitLibrary.Sensor.Sensors.IsOn. Why?
...
}
}
}
}
以下是我收到的错误:
Cannot access a nonstatic member of outer type
"MyCircuitLibrary.CircuitLibrary.SerialCommands" via nested type
"MyCircuitLibrary.CircuitLibrary.SerialCommands.SensorSettingsCommands"
所以看起来它正在Sensor
中搜索(并找到?)SerialCommands
?但是,如果我将其更改为CircuitLibrary.Sensor
,它现在知道它在CircuitLibrary中?当我右键单击并“转到定义”时,它发现它没问题并且没有说“在Sensor
中找不到SerialCommands
”。如果有人可以帮助解释发生了什么,我会很感激。
谢谢!
答案 0 :(得分:3)
您的SerialCommands
类具有非静态Sensor
属性。
由于此属性比最外层的Sensor
类更接近您的代码,因此编译器认为您使用的是属性而不是类。
由于在没有SerialCommands
实例的情况下无法使用非静态属性,因此会出现错误。
当你编写CircuitLibrary.Sensor
时,它工作正常,因为没有CircuitLibrary
属性来混淆编译器。