我已将我的应用程序移植到MVVM
模式,并已开始将代码从我的视图后面的代码移动到它自己的model
类。
我采取的第一步是将设备的网络代码https://www.thalmic.com/en/myo/移动到MyoDevice类。
原始代码托管了该视图背后的代码中的所有网络代码,我告诉他们这是不好的做法。
我已尝试使用"提取方法" Visual Studio中的工具,但我不断收到错误:"The selected text is not inside a method"
有谁知道如何将此连接和断开代码提取为两个单独的方法?
最初,在将设备连接代码移动到自己的模型之前,该类看起来像这样:
http://hastebin.com/gepudayele.cs
这是放在MyoDevice模型中的代码:
http://hastebin.com/ocogoseziy.cs
连接和断开连接的示例代码,用于在连接/断开连接时侦听设备:
// create a hub that will manage Myo devices for us
channel = Channel.Create(ChannelDriver.Create(ChannelBridge.Create()));
hub = Hub.Create(channel);
{
// listen for when the Myo connects
hub.MyoConnected += (sender, e) =>
{
this.Dispatcher.Invoke((Action)(() =>
{
statusTbx.Text = "Myo has connected! " + e.Myo.Handle;
e.Myo.Vibrate(VibrationType.Short);
// unlock the Myo so that it doesn't keep locking between our poses
e.Myo.Unlock(UnlockType.Hold);
e.Myo.PoseChanged += Myo_PoseChanged;
e.Myo.OrientationDataAcquired += Myo_OrientationDataAcquired;
}));
};
// listen for when the Myo disconnects
hub.MyoDisconnected += (sender, e) =>
{
this.Dispatcher.Invoke((Action)(() =>
{
statusTbx.Text = "Myo has disconnected!";
e.Myo.Vibrate(VibrationType.Medium);
e.Myo.OrientationDataAcquired -= Myo_OrientationDataAcquired;
e.Myo.PoseChanged -= Myo_PoseChanged;
}));
};
// start listening for Myo data
channel.StartListening();
}
答案 0 :(得分:2)
您正在做的事情没有什么特别之处,自动化工具应该工作。但是工具会中断,所以如果它不起作用,我会手动完成。
将代码重构为方法的步骤非常简单:
void
。暂无参数。显然,经验会变得更容易。我会强烈推荐尽可能多地练习这样做,并且在你理解它为你做什么之前不要使用自动重构工具。工具休息。人们不会(至少不是以同样的方式)。