提交 2a51d1c2 编写于 作者: J johnche(车雄生)

去掉跨assembly+泛型base调用的限制

上级 f31956f7
...@@ -643,24 +643,25 @@ namespace XLua ...@@ -643,24 +643,25 @@ namespace XLua
{ {
return null; return null;
} }
if (type.IsGenericInstance && //if (type.IsGenericInstance &&
(method.Module.Assembly.FullName != type.Module.Assembly.FullName)) // (method.Module.Assembly.FullName != type.Module.Assembly.FullName || method.Module.Assembly.FullName != td.Module.Assembly.FullName
{ // || method.Module.FullyQualifiedName != type.Module.FullyQualifiedName || method.Module.FullyQualifiedName != td.Module.FullyQualifiedName))
return null; //{
} // return _findBase(td.BaseType, method);
//}
var m = findOverride(td, method); var m = findOverride(td, method);
if (m != null) if (m != null)
{ {
if (type.IsGenericInstance) if (type.IsGenericInstance)
{ {
var reference = new MethodReference(m.Name, m.ReturnType, type) var reference = new MethodReference(m.Name, tryImport(method.DeclaringType, m.ReturnType), tryImport(method.DeclaringType, type))
{ {
HasThis = m.HasThis, HasThis = m.HasThis,
ExplicitThis = m.ExplicitThis, ExplicitThis = m.ExplicitThis,
CallingConvention = m.CallingConvention CallingConvention = m.CallingConvention
}; };
foreach (var parameter in m.Parameters) foreach (var parameter in m.Parameters)
reference.Parameters.Add(new ParameterDefinition(parameter.ParameterType)); reference.Parameters.Add(new ParameterDefinition(tryImport(method.DeclaringType, parameter.ParameterType)));
foreach (var generic_parameter in m.GenericParameters) foreach (var generic_parameter in m.GenericParameters)
reference.GenericParameters.Add(new GenericParameter(generic_parameter.Name, reference)); reference.GenericParameters.Add(new GenericParameter(generic_parameter.Name, reference));
return reference; return reference;
...@@ -691,7 +692,7 @@ namespace XLua ...@@ -691,7 +692,7 @@ namespace XLua
static TypeReference tryImport(TypeReference type, TypeReference toImport) static TypeReference tryImport(TypeReference type, TypeReference toImport)
{ {
if (type.Module.Assembly.FullName == toImport.Module.Assembly.FullName if (type.Module.Assembly.FullName == toImport.Module.Assembly.FullName
&& type.Module == toImport.Module) && type.Module.FullyQualifiedName == toImport.Module.FullyQualifiedName)
{ {
return toImport; return toImport;
} }
...@@ -704,7 +705,7 @@ namespace XLua ...@@ -704,7 +705,7 @@ namespace XLua
static MethodReference tryImport(TypeReference type, MethodReference toImport) static MethodReference tryImport(TypeReference type, MethodReference toImport)
{ {
if (type.Module.Assembly.FullName == toImport.Module.Assembly.FullName if (type.Module.Assembly.FullName == toImport.Module.Assembly.FullName
&& type.Module == toImport.Module) && type.Module.FullyQualifiedName == toImport.Module.FullyQualifiedName)
{ {
return toImport; return toImport;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册