summaryrefslogtreecommitdiff
path: root/src/vm/winrtredirector.h
diff options
context:
space:
mode:
authorRyan Byington <ryanbyi@microsoft.com>2015-04-28 17:53:30 -0700
committerRyan Byington <ryanbyi@microsoft.com>2015-04-28 17:53:30 -0700
commitfb68f332e9123d74bd1cc7187be000bc3cbf67d2 (patch)
treee8aca912b70dd791502d977beb6262e264dda1e2 /src/vm/winrtredirector.h
parent2fd35925a66be17a46467050751c309b93f2013b (diff)
downloadcoreclr-fb68f332e9123d74bd1cc7187be000bc3cbf67d2.tar.gz
coreclr-fb68f332e9123d74bd1cc7187be000bc3cbf67d2.tar.bz2
coreclr-fb68f332e9123d74bd1cc7187be000bc3cbf67d2.zip
Updating WinRT Projections to use Facades
WinRT projections currently depend on implementation assemblies like System.Uri living in System.dll. System.Uri has already been moved out of System.dll to Internal.Uri.dll which breaks the projection for System.Uri. This change updates the WinRT projection to understand Facades like System.Runtime to resolve System.Uri. When we load a type like System.Uri we need to know if it is a projected type. We currently do this by comparing the namespace plus type name and assembly however this only works because we know the implementation assembly at compile time. I am changing it so that we use ClassLoader to resolve the typedef and assembly and compare the resolved assembly with the current one. Also removing the cached assemblies as they don’t add a lot of value anymore. [tfs-changeset: 1461733]
Diffstat (limited to 'src/vm/winrtredirector.h')
-rw-r--r--src/vm/winrtredirector.h14
1 files changed, 5 insertions, 9 deletions
diff --git a/src/vm/winrtredirector.h b/src/vm/winrtredirector.h
index 2ab807c88e..595eeb7e86 100644
--- a/src/vm/winrtredirector.h
+++ b/src/vm/winrtredirector.h
@@ -36,12 +36,9 @@ public:
// Returns MethodTable (typical instantiation) of the Framework copy of the specified redirected WinRT interface.
static MethodTable *GetWinRTTypeForRedirectedInterfaceIndex(WinMDAdapter::RedirectedTypeIndex index);
-
- // Loads a type from the given Framework assembly.
- static MethodTable *LoadTypeFromRedirectedAssembly(WinMDAdapter::FrameworkAssemblyIndex index, LPCWSTR wzTypeName);
-
+
// Loads a method from the given Framework assembly.
- static MethodDesc *LoadMethodFromRedirectedAssembly(WinMDAdapter::FrameworkAssemblyIndex index, LPCWSTR wzTypeName, LPCUTF8 szMethodName);
+ static MethodDesc *LoadMethodFromRedirectedAssembly(LPCUTF8 szAssemblyQualifiedTypeName, LPCUTF8 szMethodName);
// Lists WinRT-legal types assignable from .NET reference types that are projected from WinRT structures/arrays/delegates.
enum WinRTLegalStructureBaseType
@@ -120,10 +117,9 @@ private:
struct NonMscorlibRedirectedInterfaceInfo
{
- const WinMDAdapter::FrameworkAssemblyIndex m_AssemblyIndex;
- const LPCWSTR m_wzWinRTInterfaceTypeName;
- const LPCWSTR m_wzCLRStubClassTypeName;
- const LPCWSTR m_wzWinRTStubClassTypeName;
+ const LPCUTF8 m_szWinRTInterfaceAssemblyQualifiedTypeName;
+ const LPCUTF8 m_szCLRStubClassAssemblyQualifiedTypeName;
+ const LPCUTF8 m_szWinRTStubClassAssemblyQualifiedTypeName;
const LPCUTF8 *m_rszMethodNames;
};