如何在C#(移动应用程序)中从另一个类调用变量

如何在C#(移动应用程序)中从另一个类调用变量,c#,class,variables,C#,Class,Variables,我正在Visual Studio 2019上工作。 我在battylert.Android->battyservice1.cs中有一个名为“batt_lev”的变量 我需要在MainPage.xaml.cs中的共享代码中,在名为“void Etichetta()”的方法中调用此变量,在该方法中我必须使用该变量。 正如您所看到的,我尝试使用BatteryService1.batt_-lev,但错误是“在此上下文中没有BatteryService1” 有人能帮我吗 共享代码中的MainPage.xa

我正在Visual Studio 2019上工作。 我在battylert.Android->battyservice1.cs中有一个名为“batt_lev”的变量 我需要在MainPage.xaml.cs中的共享代码中,在名为“void Etichetta()”的方法中调用此变量,在该方法中我必须使用该变量。 正如您所看到的,我尝试使用BatteryService1.batt_-lev,但错误是“在此上下文中没有BatteryService1”

有人能帮我吗

共享代码中的MainPage.xaml.cs

namespace BatteryAlert
{
    public partial class MainPage : ContentPage
    {
        private double batt_lev;
        


        public MainPage()
        {
            
            InitializeComponent();
            DependencyService.Get<IUpLoad>().upLoad();
            //Etichetta();
            //DependencyService.Get<IAndroidService>().StartServicee();
            //Battery.BatteryInfoChanged += Battery_BatteryInfoChanged;
            

        }

        void Etichetta()
        {
            
            //Battery.BatteryInfoChanged += Battery_BatteryInfoChanged;
 
            batt_lev = (float)Battery.ChargeLevel;
            CounterLabel.Text = BatteryService1.batt_lev.ToString("N2");
        }
    }
}
namespace BatteryAlert
{
公共部分类主页:ContentPage
{
私人双电池;
公共主页()
{
初始化组件();
DependencyService.Get().upLoad();
//伊切塔();
//DependencyService.Get().startService();
//Battery.BATTERYNFOCHANGED+=电池\u电池FOCHANGED;
}
无效
{
//Battery.BATTERYNFOCHANGED+=电池\u电池FOCHANGED;
电池电量=(浮充)电池电量;
CounterLabel.Text=BatteryService1.batt_lev.ToString(“N2”);
}
}
}
BatteryAlert.Android中的BatteryService1.cs

namespace BatteryAlert.Droid
{
    [Service(Name = "com.companyname.BatteryAlert.BatteryService1")]
    public class BatteryService1 : JobIntentService
    {
        private static int MY_JOB_ID = 1000;
        public double batt_lev;
        List<double> valoreControllo = new List<double>()
        {
            0.65, 0.60, 0.55, 0.50, 0.45, 0.40, 0.35, 0.30, 0.25, 0.20, 0.15, 0.10, 0.05
        };


        protected override void OnHandleWork(Intent p0)
        {
            Device.StartTimer(new TimeSpan(0, 0, 10), () =>
            {
                // do something every 10 seconds
                Battery.BatteryInfoChanged += Battery_BatteryInfoChanged;
                //DependencyService.Get<IAudio>().PlayAudioFile("suono_123.wav");
                return true; // runs again, or false to stop
            });
            
        }

        public static void EnqueueWork(Context context, Intent work)
        {
            Java.Lang.Class cls = Java.Lang.Class.FromType(typeof(BatteryService1));

            try
            {
                EnqueueWork(context, cls, MY_JOB_ID, work);
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception: {0}", ex.Message);
            }

        }

        void Battery_BatteryInfoChanged(Object sender, BatteryInfoChangedEventArgs e)
        {
            batt_lev = (double)e.ChargeLevel;
            batt_lev = Math.Round(batt_lev, 2);

            if (valoreControllo.Contains(batt_lev))
            {
                //CounterLabel.Text = batt_lev.ToString("N2");
                DependencyService.Get<IAudio>().PlayAudioFile("suono_123.wav");
            }

        }
    }
}
namespace BatteryAlert.Droid
{
[服务(Name=“com.companyname.BatteryAlert.BatteryService1”)]
公共类电池服务1:JobIntentService
{
私有静态int MY_JOB_ID=1000;
公共双电池;
列表从价控制=新列表()
{
0.65, 0.60, 0.55, 0.50, 0.45, 0.40, 0.35, 0.30, 0.25, 0.20, 0.15, 0.10, 0.05
};
手工制品上的受保护覆盖无效(目的p0)
{
Device.StartTimer(新的时间跨度(0,0,10),()=>
{
//每10秒做一次
Battery.BATTERYNFOCHANGED+=电池\u电池FOCHANGED;
//DependencyService.Get().PlayAudioFile(“suono_123.wav”);
返回true;//再次运行,或返回false停止
});
}
公共静态void排队工作(上下文、意图工作)
{
Java.Lang.Class cls=Java.Lang.Class.FromType(typeof(BatteryService1));
尝试
{
排队工作(上下文、cls、我的工作ID、工作);
}
捕获(例外情况除外)
{
WriteLine(“异常:{0}”,例如Message);
}
}
无效电池电量已更改(对象发送器,电池电量更改数据源e)
{
batt_lev=(双)e.充电水平;
batt_lev=数学圆(batt_lev,2);
if(从价控制包含(电池层))
{
//CounterLabel.Text=batt_lev.ToString(“N2”);
DependencyService.Get().PlayAudioFile(“suono_123.wav”);
}
}
}
}

如果要访问另一个类中的变量,则应该为要使用它的类派生该类

public partial class MainPage : ContentPage
如果仍希望为ContentPage派生MainPage,则应将所需的类(BatteryService1)派生到ContentPage,反之亦然。像这样:

public class ContentPage : BatteryService1

batt_lev不是静态的,因此必须实例化BatteryService1才能访问它。看起来你正在使用依赖注入,所以你应该注入BatteryService1以使用itok,我在inernet上读过一些东西,看起来很复杂,请记住我使用并改编了上面的代码,所以我不知道如何“注入BatteryService1”。你能给我一些其他的建议吗?非常感谢。