【问题标题】:How to call method in class loaded assembly that pauses a如何调用暂停类加载程序集的方法
【发布时间】:2013-12-13 16:30:53
【问题描述】:

我动态加载我的程序集,我通过 Activator.CreateInstance 创建了一个 UserControl 视图的实例。

classType = a.GetType(assembly + "." + constructor);
obj = Activator.CreateInstance(classType);

我有一个链接到视图的 ViewModel。 ViewModel 有一个计时器,它在构造函数中启动。

我想动态调用像 Pause() 和 Resume() 这样的方法来停止和启动这个计时器。

我的想法是这个方法必须在 View 的代码隐藏中。我将保留 classType 和 obj,以便调用 View 的方法。然而,通知 ViewModel 从代码隐藏暂停或恢复而不扰乱 MVVM 的方法让我很困惑。可以参考一些建议。

[编辑] 忽略以下已作为单独的问题打开:https://stackoverflow.com/questions/20572205/how-call-dispose-method-with-loaded-assembly

如果我想处置此类的一个实例。我试过了

var methodInfo = CurrentAssemblyClassType.GetMethod("Dispose");
var methodInfo = CurrentAssemblyClassType.GetMethod("Close");

methodInfo 两者都为空,不知道该调用什么。

public partial class Blank : UserControl, IDisposable
{
    public Blank(String key)
    {
        InitializeComponent();
    }

    public void Close()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

    protected virtual void Dispose(bool disposing)
    {
        if (disposing)
        {
        }
    }

    ~Blank()
    {
        Dispose(false);
    }

    #region IDisposable Members
    void IDisposable.Dispose()
    {
        Close();
    }
    #endregion
}

【问题讨论】:

  • 您的虚拟机上肯定只有ICommand's 用于暂停和恢复并从您的视图绑定到这些吗?

标签: c# wpf mvvm viewmodel .net-assembly


【解决方案1】:

在 MVVM 中,View 可以通过“命令”的方式告诉 ViewModel 做什么

动态加载的程序集没有什么特别的

【讨论】:

  • 很公平,如果我能再问一个关于调用方法的更多问题。见上面的Edit
  • @Hank 请用适当的标题/标签将其作为单独的问题打开
猜你喜欢
  • 2010-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-18
  • 1970-01-01
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多