【问题标题】:Invoke dynamic object's method调用动态对象的方法
【发布时间】:2012-08-04 17:15:40
【问题描述】:

当两个对象都是动态创建时,如何从另一个对象方法调用/调用一个对象的方法?

情况如下:

我有两个动态创建的对象,每个对象对应一个不同的类

objA
   Method1A()
objB
   Method1B()

我想从objBmethod1B() 拨打objAmethod1A()

我怎样才能做到这一点/您推荐什么方法?

【问题讨论】:

    标签: c# vb.net dynamic-class-creation


    【解决方案1】:

    为了调用某种类型的实例方法,您需要该类型的实例。因此,如果 Method1B 应该调用 objA 上的实例方法,您可以将此实例作为参数传递给该方法:

    public void Method1B(ObjA objA)
    {
        objA.Method1A();
    }
    

    【讨论】:

    • 我认为如果objA是在objB之后创建的,这将不起作用,那么如何实现呢?
    • @armadillo.mx 如果这是可能的,那么你就有了一个循环。你现在不能用单独的程序集来解决这个问题,除非你可以避免循环声明;然后您可以在没有循环调用的情况下编译一个程序集,然后在构建其他程序集之后使用它重新编译。您可以在这里尝试相同的方法,但除非您知道循环以及可以在哪里暂时中断循环,否则您需要进行一些分析。
    • @Mark Hurd,你说得对,我想我需要一种不同的方法,谢谢!
    • @armadillo.mx 在这种情况下,我已将我的评论提升为答案。
    【解决方案2】:

    如果有可能“objA 是在objB 之后创建的”,那么你就有了一个循环。你现在不能用单独的程序集来解决这个问题,除非你可以避免循环声明;然后您可以在没有循环调用的情况下编译一个程序集,然后在构建其他程序集之后使用它重新编译。您可以在这里尝试相同的方法,但除非您知道周期以及可以在哪里暂时中断它们,否则您需要进行一些分析。

    注意this question 要求并获得类似于我的方法来处理普通程序集之间的循环依赖关系。

    【讨论】:

      猜你喜欢
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-25
      • 1970-01-01
      • 2012-04-08
      • 2012-09-15
      • 1970-01-01
      相关资源
      最近更新 更多