代码之家  ›  专栏  ›  技术社区  ›  Jonah Peele

请解释后期绑定过程

  •  1
  • Jonah Peele  · 技术社区  · 7 年前

    我想做一个简单的插件。开发人员文档说明:

    ETABS。exe文件 ETABSObject ,并获取对 cOAPI公司

    我对如何延迟绑定到已经运行的exe感到非常困惑。如果你能给我举个例子或给我指出正确的方向,我将非常感激。几天来我一直把头撞在墙上。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Ankit    7 年前

    早期绑定

    早期绑定

    例子:

    System.IO.FileStream FS ;
    FS = new System.IO.FileStream("C:\\temp.txt", System.IO.FileMode.Open);
    

    上面的代码创建了一个变量FS来保存一个新对象,然后将一个新对象分配给该变量。在这里,在运行时执行变量之前,类型是已知的。FileStream是一种特定的对象类型,分配给FS的实例是早期绑定的。

    在执行早期绑定时,编译器可以确保在编译时该函数将存在并在运行时可调用。此外,编译器保证函数采用的参数数量准确,类型正确,并且可以检查返回值的类型是否正确。

    后期绑定

    相反,在后期绑定函数中,只在运行时检测和检查方法、变量和属性。这意味着编译器直到运行时才知道对象的类型或实际类型,或者对象包含的方法或属性。后期绑定的最大优点是,这种类型的对象可以保存对任何对象的引用,但缺少早期绑定对象的许多优点。

    例子:

    //The var keyword instructs the compiler to infer the type of the variable
     // from the expression on the right side of the initialization statement.     
      var eTabsObj = null;//notice the var keyword
      //instead of var you can use an interface variable to hold reference
      // of late bind object
      eTabsObj = CreateObject("<create an instance of ETABSObject>");//executed at runtime
    

    注意我们如何使用 风险值 为了保持对ETABS对象的引用,var基本上是一种语法糖,它从被分配的对象推断对象类型。现在,而不是使用 你可以用一个 保持对象的引用。

    虽然执行后期绑定,但目标函数可能不存在。此外,目标函数可能不接受传递给它的参数,并且可能具有错误类型的返回值。