代码之家  ›  专栏  ›  技术社区  ›  Ray

无法将对象强制转换为自己的类型

  •  0
  • Ray  · 技术社区  · 5 年前

    Unable to set property 'Model' on object of type 'CSBApp.ExtHdr'. 
    The error was: [A]TQ.ModelExt cannot be cast to [B]TQ.ModelExt. 
    Type A originates from 'TQ.Exts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' 
    at location 'C:\_work\Server.SSB\bin\Debug\net5.0-windows\TQ.Exts.dll'. 
    Type B originates from 'TQ.Exts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' 
    at location 'C:\_work\Server.SSB\bin\Debug\net5.0-windows\TQ.Exts.dll'.
    

    好像加载了两个相同的程序集!

    object Model = ...; // actually a ModelExt
    var a1 = Model.GetType().Assembly;
    var a2 = typeof(ModelExt).Assembly;
    if (a1 != a2) {
        DBG.Log("merde...");
    }
    

    组件,a1和;a2,具有相同的名称、版本和;位置不同,但m\ U组件不同。

    这怎么可能??

    0 回复  |  直到 5 年前
        1
  •  1
  •   Ray    5 年前

    回答我自己的问题。看到这里了吗( https://docs.microsoft.com/en-us/dotnet/framework/deployment/best-practices-for-assembly-loading )关于在多个上下文中加载。

    简而言之,使用 Assembly.LoadFrom() 而不是 Assembly.LoadFile() .