Fixed ImportTo to use canonical form, which for methods on generic type definitions is the Generic[Method|Field]Instance, instead of the builder. This fixes a duplicate MemberRef row issue when using both the MethodBuilder and the "expanded" form (TypeBuilder.GetMethod(...)).

This commit is contained in:
jfrijters 2010-06-24 08:46:25 +00:00
Родитель 6f6dc0c78b
Коммит f369472784
2 изменённых файлов: 10 добавлений и 2 удалений

Просмотреть файл

@ -167,7 +167,11 @@ namespace IKVM.Reflection.Emit
internal override int ImportTo(ModuleBuilder other)
{
if (other == typeBuilder.ModuleBuilder && !typeBuilder.IsGenericTypeDefinition)
if (typeBuilder.IsGenericTypeDefinition)
{
return other.ImportMember(TypeBuilder.GetField(typeBuilder, this));
}
else if (other == typeBuilder.ModuleBuilder)
{
return pseudoToken;
}

Просмотреть файл

@ -651,7 +651,11 @@ namespace IKVM.Reflection.Emit
internal override int ImportTo(ModuleBuilder other)
{
if (other == typeBuilder.ModuleBuilder && !typeBuilder.IsGenericTypeDefinition)
if (typeBuilder.IsGenericTypeDefinition)
{
return other.ImportMember(TypeBuilder.GetMethod(typeBuilder, this));
}
else if (other == typeBuilder.ModuleBuilder)
{
return pseudoToken;
}