我有件一,取决于(静态)上T型(基准类型,一类)在组件B。

我不要自己组装的,但我做自己的组件B。T不幸的是是真实的类型(不接口),但幸运的是使用反射以发现其成员。

我希望能够创造动态B(T).唯一重要的项目是的,我需要确保"B和T"动态创建的(不是他们的成员)是"同等"。这些是静态的编制时是编制。

  1. 我可以使用反映这些建B和T.没有问题。
  2. 我可以写信B.dll 磁盘
  3. 如果是编制针对这B.dll 然后我可以动态变化T,没问题
  4. 但是,如果一编制针对一个相当于(手写的B和T)然后T'中的一个将拥有相同的组件名称和种类型的名称,但它不会被认为是相等的一个动态的建立。

我认为原因是GUID财产的类型。当我写的B.dll 磁盘的T型具有相同的GUID于一个我可以创造动态(即使我改变其成员)。但是"否则相当"手写的类型不分享同一GUID。

在摘要GUID是相同的,如果dll来从动态创建的,但是不同的一个静态的建立。GUID是相同的,每次(甚至如果我要重新编译).GUID是相同的,如果我改变内容的动态型的。

如何运行时确定,如果两种类型都是一样的吗?这是怎么GUID?它使用这GUID和/或其他什么东西?是否可以指定这个GUID在我dimamic会相匹配的一个组件?

可以这GUID以审查静态(我是不是能够看到它与反射器或ildasm).

注:假定组件没有签名。

有帮助吗?

解决方案

。净运行时使用的组件名称、版本强烈的名称(如果存在),并在某些情况下的文化找到引用的组件。如果一个组一个引用的另一个组件B是可能的替换B的另一个大会,如果所提到的属性是完全相同的。如果B有一个强烈的名字,你可以仅仅创建一个又会用同样强的名字,如果你自己的关键文件,这是用于签署大会。

据我所知,对类型。GUID的财产仅用于当类型的登记COM使用。它的工作与GuidAttribute类。因此,类型。GUID有什么用"标识"的一个类型。

你可以了解更多关于如何运行时位程序集在这里: http://msdn.microsoft.com/en-us/library/yx7xezcf.aspx

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top