<br />
<b>Deprecated</b>:  YoastSEO_Vendor\Symfony\Component\DependencyInjection\Container::__construct(): Implicitly marking parameter $parameterBag as nullable is deprecated, the explicit nullable type must be used instead in <b>/home/nubelus/sharedove/adisjugo/wp-content/plugins/wordpress-seo/vendor_prefixed/symfony/dependency-injection/Container.php</b> on line <b>60</b><br />
<br />
<b>Deprecated</b>:  YoastSEO_Vendor\League\OAuth2\Client\Provider\AbstractProvider::authorize(): Implicitly marking parameter $redirectHandler as nullable is deprecated, the explicit nullable type must be used instead in <b>/home/nubelus/sharedove/adisjugo/wp-content/plugins/wordpress-seo/vendor_prefixed/league/oauth2-client/src/Provider/AbstractProvider.php</b> on line <b>416</b><br />
<br />
<b>Deprecated</b>:  YoastSEO_Vendor\GuzzleHttp\Client::getConfig(): Implicitly marking parameter $option as nullable is deprecated, the explicit nullable type must be used instead in <b>/home/nubelus/sharedove/adisjugo/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/guzzle/src/Client.php</b> on line <b>181</b><br />
<br />
<b>Deprecated</b>:  YoastSEO_Vendor\GuzzleHttp\ClientInterface::getConfig(): Implicitly marking parameter $option as nullable is deprecated, the explicit nullable type must be used instead in <b>/home/nubelus/sharedove/adisjugo/wp-content/plugins/wordpress-seo/vendor_prefixed/guzzlehttp/guzzle/src/ClientInterface.php</b> on line <b>77</b><br />
{"id":767,"date":"2012-02-12T15:27:49","date_gmt":"2012-02-12T14:27:49","guid":{"rendered":"https:\/\/blog.sharedove.com\/adisjugo\/?p=767"},"modified":"2012-02-12T15:27:49","modified_gmt":"2012-02-12T14:27:49","slug":"retrieving-fully-qualified-assembly-module-and-type-names","status":"publish","type":"post","link":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/","title":{"rendered":"Retrieving fully qualified assembly, module and type names"},"content":{"rendered":"<p>How often do you need to retrieve a fully qualified assembly or type name? If you are using a lot dependency injection, you need it often. Too often, actually.<\/p>\n<p>There are multiple ways how to do it \u2013 using <span style=\"text-decoration: line-through;\">Reflector<\/span> <a href=\"http:\/\/wiki.sharpdevelop.net\/ILSpy.ashx\">ILSpy<\/a> to find out the fully qualified assembly name, and then to prepend the type name, or moving the DLL temporarily to GAC to read it from there, or, or&#8230;<\/p>\n<p>Well, I got a kind of fed up. I have built a command line tool, with only one parameter: path to the DLL file. Result: fully qualified assembly name, module and type names will be displayed in the comand line window, as well as copied to the clipboard.<\/p>\n<p><!--more--><\/p>\n<p><del datetime=\"2012-02-12T19:37:40+00:00\">When the tool is run without any parameters, it installs itself as a shell extension in Windows Explorer, so that you can just right click the DLL file, and run the tool. <\/del><\/p>\n<p>My dear friend <a href=\"http:\/\/developers.de\/blogs\/andreas_erben\/default.aspx\">Anreas Erben<\/a> just gave me a hard time about the &#8220;autonistall&#8221; feature &#8211; and with right. So, if you run the tool without parameters it will not install in shell. Nothing will happen now if you run the tool without parameters (ok, a nice message will be displayed).<\/p>\n<p>You can still install it in Windows Explorer shell, but you need to run it with \/INSTALLSHELL parameters<\/p>\n<p><strong>getassemblyname \/installshell<\/strong><\/p>\n<p>The same way, you can remove it from the shell:<\/p>\n<p><strong>getassemblyname \/uninstallshell<\/strong><\/p>\n<p>Saves the the time, saves the nerves (&#8220;<em>Did I get my fully qualified name and type name right? @#$!%$ No, I didn&#8217;t&#8230;<\/em>&#8220;)<\/p>\n<p><a href=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension.png\"><img loading=\"lazy\" decoding=\"async\" style=\"background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;\" title=\"shell-extension\" src=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension_thumb.png\" alt=\"shell-extension\" width=\"448\" height=\"258\" border=\"0\" \/><\/a><\/p>\n<p>The result looks like:<\/p>\n<p>[XML]<br \/>\nLoaded Assembly:<br \/>\nPlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<\/p>\n<p>Modules:<br \/>\nModule: PlanB.Core.dll<br \/>\nFully Qualified Name: C:ProDevPlanBShareDoveConferenceOrganizationUILayerConsolebinDebugPlanB.Core.dll<\/p>\n<p>Types in module:<br \/>\nPlanB.Core.Logging.Configuration, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\nPlanB.Core.Logging.LoggingImplementation, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\nPlanB.Core.Logging.LoggingSettings, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\nPlanB.Core.Logging.LoggerParametersCollection, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\nPlanB.Core.Logging.LoggingParameter, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\nPlanB.Core.Configuration.ConfigurationInformation, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\nPlanB.Core.Logging.iLogger, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\nPlanB.Core.Logging.EventServerity, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\nPlanB.Core.Logging.InnerExceptionsLevel, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\nPlanB.Core.Logging.MockLogger, PlanB.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=79ea5ba3438af0bf<br \/>\n[\/XML]<\/p>\n<p>And the code is here:<\/p>\n<p>&#8211;&gt;\u00a0 <a href=\"http:\/\/adis.jugo.ba\/download\/blogimg\/GetAssemblyName.zip\">Download code<\/a><\/p>\n<pre class=\"brush: csharp; title: Code sample:; notranslate\" title=\"Code sample:\">\nusing System;\nusing System.Reflection;\nusing System.Windows.Forms;\nusing Microsoft.Win32;\nusing System.Text;\n\nnamespace PlanB.Tools.QualifiedNamesGetter\n{\n    class Program\n    {\n        &#x5B;STAThread]\n        static void Main(string&#x5B;] args)\n        {\n            \/\/check arguments\n            if (args == null || args.Length == 0) return;\n\n            \/\/\n            \/\/install into windows explorer shell\n            if (args&#x5B;0].Trim().ToUpper().StartsWith(&quot;\/INSTALLSHELL&quot;))\n            {\n                registerShellExtension(&quot;dllfile&quot;, &quot;ReadFullyQualifiedAssemblyName&quot;, &quot;Read fully qualified assembly name, modules and types&quot;, Application.ExecutablePath);\n                return;\n            }\n\n            \/\/\n            \/\/uninstall from windows explorer shell\n            if (args&#x5B;0].Trim().ToUpper().StartsWith(&quot;\/UNINSTALLSHELL&quot;))\n            {\n                unregisterShellExtension(&quot;dllfile&quot;, &quot;ReadFullyQualifiedAssemblyName&quot;);\n                return;\n            }\n\n            string assemblyPath = args&#x5B;0];\n\n            StringBuilder output = new StringBuilder();\n\n            \/\/\n            \/\/Load assembly from path\n            Assembly loadedAssembly = null;\n            try\n            {\n                loadedAssembly = Assembly.LoadFile(assemblyPath);\n            }\n            catch (Exception ex)\n            {\n                Console.WriteLine(string.Format(&quot;Error by loading assembly {0}. n Error Message: {1}&quot;, assemblyPath, ex.Message));\n            }\n\n            \/\/\n            \/\/if assemblu successfully loaded...\n            if (loadedAssembly != null)\n            {\n                try\n                {\n                    output.AppendLine(&quot;Loaded Assembly:&quot;);\n                    output.AppendLine(loadedAssembly.FullName);\n                    output.AppendLine(&quot;n&quot;);\n\n                    \/\/\n                    \/\/..get all modules from the assembly...\n                    Module&#x5B;] modules = loadedAssembly.GetModules();\n                    if (modules.Length &gt; 0)\n                    {\n                        output.AppendLine(&quot;Modules:&quot;);\n\n                        foreach (Module module in modules)\n                        {\n                            output.AppendFormat(&quot;Module: {0}nFully Qualified Name: {1}nn&quot;, module.Name, module.FullyQualifiedName);\n                            Type&#x5B;] types = module.GetTypes();\n\n                            \/\/\n                            \/\/...and then all types from the module\n                            if (types.Length &gt; 0)\n                            {\n                                output.AppendLine(&quot;Types in module:&quot;);\n                                foreach (Type type in types)\n                                {\n                                    string typeName = type.AssemblyQualifiedName;\n                                    output.AppendLine(typeName);\n                                }\n                            }\n                        }\n\n                        output.AppendLine(&quot;-----------------------n&quot;);\n                    }\n                }\n                catch (ReflectionTypeLoadException reflectionEx)\n                {\n                    output.AppendLine(&quot;Reflection Exception:&quot; + reflectionEx.Message);\n                    output.AppendLine(&quot;Loader Exceptions:&quot;);\n                    foreach (Exception ex in reflectionEx.LoaderExceptions)\n                    {\n                        output.AppendLine(ex.Message);\n                    }\n                }\n                catch (Exception ex)\n                {\n                    output.AppendLine(&quot;Generic Exception:&quot; + ex.Message);\n                    output.AppendLine(&quot;StackTraces:&quot;);\n                    output.AppendLine(ex.StackTrace);\n                }\n            }\n\n            \/\/paste it to the console window\n            Console.WriteLine(output.ToString());\n\n            \/\/and copy it to the clipboard, as well\n            Clipboard.SetDataObject(output.ToString(), true);\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ Registers a Shell Extension for a given file type, sets the key and value, and sets it&#039;s command to a specified assembly\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;fileType&quot;&gt;File type for which we need to create a shell extension&lt;\/param&gt;\n        \/\/\/ &lt;param name=&quot;extensionKey&quot;&gt;Key we want to give to our shell extension&lt;\/param&gt;\n        \/\/\/ &lt;param name=&quot;extensionValue&quot;&gt;Text we want to display ny the shell extension&lt;\/param&gt;\n        \/\/\/ &lt;param name=&quot;commandAssembly&quot;&gt;Assembly we want to execute when clicked on the shell extension&lt;\/param&gt;\n        private static void registerShellExtension(string fileType, string extensionKey, string extensionValue, string commandAssembly)\n        {\n            \/\/\n            \/\/Open a registy key HKEY_CURRENT_USERSoftwareClasses  \n            \/\/this is where we are going to save the shell extension for the file type\n            using (var classesRegistyKey = Registry.CurrentUser.OpenSubKey(&quot;Software\\Classes&quot;, true))\n            {\n                if (classesRegistyKey == null) return;\n\n                \/\/\n                \/\/create subkey for DLL files\n                using (var fileTypeKey = classesRegistyKey.CreateSubKey(fileType))\n                {\n                    if (fileTypeKey == null) return;\n\n                    \/\/\n                    \/\/add a shell extension for DLL files\n                    using (var shellKey = fileTypeKey.CreateSubKey(&quot;shell&quot;))\n                    {\n                        if (shellKey == null) return;\n\n                        \/\/\n                        \/\/create key\n                        using (var shellExtensionKey = shellKey.CreateSubKey(extensionKey))\n                        {\n                            if (shellExtensionKey == null) return;\n\n                            \/\/and create a value for the key\n                            shellExtensionKey.SetValue(string.Empty, extensionValue);\n\n                            \/\/\n                            \/\/and then create a command to be executed when extension clicked - \n                            \/\/set it to the given command  assembly\n                            using (var commandKey = shellExtensionKey.CreateSubKey(&quot;command&quot;))\n                            {\n                                if (commandKey == null) return;\n                                commandKey.SetValue(&quot;&quot;, string.Concat(&quot;&quot;&quot;, commandAssembly, &quot;&quot; &quot;%1&quot;&quot;));\n                            }\n                        }\n                    }\n                }\n            }\n            return;\n        }\n\n        \/\/\/ &lt;summary&gt;\n        \/\/\/ Unregisters a Shell Extension for a given file type and a given key\n        \/\/\/ &lt;\/summary&gt;\n        \/\/\/ &lt;param name=&quot;fileType&quot;&gt;File type for which we need to create a shell extension&lt;\/param&gt;\n        \/\/\/ &lt;param name=&quot;extensionKey&quot;&gt;Key we want to give to our shell extension&lt;\/param&gt;\n        private static void unregisterShellExtension(string fileType, string extensionKey)\n        {\n            \/\/\n            \/\/Open a registy key HKEY_CURRENT_USERSoftwareClasses  \n            \/\/this is where we are going to save the shell extension for the file type\n            using (var classesRegistyKey = Registry.CurrentUser.OpenSubKey(&quot;Software\\Classes&quot;, RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl))\n            {\n                if (classesRegistyKey == null) return;\n\n                \/\/\n                \/\/navigate the nodes down to the key\n                var fileTypeKey = classesRegistyKey.OpenSubKey(fileType, RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);\n                if (fileTypeKey == null) return;\n\n\n                var shellKey = fileTypeKey.OpenSubKey(&quot;shell&quot;, RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl);\n                if (shellKey == null) return;\n\n                \/\/\n                \/\/delete the key\n                var commandKey = shellKey.OpenSubKey(extensionKey, RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.Delete);\n                shellKey.DeleteSubKeyTree(extensionKey);\n\n            }\n            return;\n        }\n    }\n}\n<\/pre>\n<p>Enjoy!<\/p>\n<div class=\"fb-background-color\">\n\t\t\t  <div \n\t\t\t  \tclass = \"fb-comments\" \n\t\t\t  \tdata-href = \"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/\"\n\t\t\t  \tdata-numposts = \"59\"\n\t\t\t  \tdata-lazy = \"true\"\n\t\t\t\tdata-colorscheme = \"light\"\n\t\t\t\tdata-order-by = \"time\"\n\t\t\t\tdata-mobile=true>\n\t\t\t  <\/div><\/div>\n\t\t  <style>\n\t\t    .fb-background-color {\n\t\t\t\tbackground:  !important;\n\t\t\t}\n\t\t\t.fb_iframe_widget_fluid_desktop iframe {\n\t\t\t    width: 100% !important;\n\t\t\t}\n\t\t  <\/style>\n\t\t  ","protected":false},"excerpt":{"rendered":"<p>How often do you need to retrieve a fully qualified assembly or type name? If you are using a lot dependency injection, you need it often. Too often, actually. There are multiple ways how to do it \u2013 using Reflector ILSpy to find out the fully qualified assembly name, and then to prepend the type [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[11],"tags":[24],"class_list":["post-767","post","type-post","status-publish","format-standard","hentry","category-development","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Retrieving fully qualified assembly, module and type names - Adis Jugo blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Retrieving fully qualified assembly, module and type names - Adis Jugo blog\" \/>\n<meta property=\"og:description\" content=\"How often do you need to retrieve a fully qualified assembly or type name? If you are using a lot dependency injection, you need it often. Too often, actually. There are multiple ways how to do it \u2013 using Reflector ILSpy to find out the fully qualified assembly name, and then to prepend the type [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/\" \/>\n<meta property=\"og:site_name\" content=\"Adis Jugo blog\" \/>\n<meta property=\"article:published_time\" content=\"2012-02-12T14:27:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension_thumb.png\" \/>\n<meta name=\"author\" content=\"adis.jugo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"adis.jugo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/\",\"url\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/\",\"name\":\"Retrieving fully qualified assembly, module and type names - Adis Jugo blog\",\"isPartOf\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension_thumb.png\",\"datePublished\":\"2012-02-12T14:27:49+00:00\",\"author\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/a5ca63552094ce9d5a0440f3a1ac9a4c\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#primaryimage\",\"url\":\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension_thumb.png\",\"contentUrl\":\"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension_thumb.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.sharedove.com\/adisjugo\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Retrieving fully qualified assembly, module and type names\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#website\",\"url\":\"https:\/\/blog.sharedove.com\/adisjugo\/\",\"name\":\"Adis Jugo blog\",\"description\":\"The Southern Side\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.sharedove.com\/adisjugo\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/a5ca63552094ce9d5a0440f3a1ac9a4c\",\"name\":\"adis.jugo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/cc5a23cf1bd0b9d8401c9dd65c6c141041ec0c6e37eedbb511779e4a40a198fd?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/cc5a23cf1bd0b9d8401c9dd65c6c141041ec0c6e37eedbb511779e4a40a198fd?s=96&d=mm&r=g\",\"caption\":\"adis.jugo\"},\"url\":\"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/author\/adisjugo\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Retrieving fully qualified assembly, module and type names - Adis Jugo blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/","og_locale":"en_US","og_type":"article","og_title":"Retrieving fully qualified assembly, module and type names - Adis Jugo blog","og_description":"How often do you need to retrieve a fully qualified assembly or type name? If you are using a lot dependency injection, you need it often. Too often, actually. There are multiple ways how to do it \u2013 using Reflector ILSpy to find out the fully qualified assembly name, and then to prepend the type [&hellip;]","og_url":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/","og_site_name":"Adis Jugo blog","article_published_time":"2012-02-12T14:27:49+00:00","og_image":[{"url":"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension_thumb.png","type":"","width":"","height":""}],"author":"adis.jugo","twitter_card":"summary_large_image","twitter_misc":{"Written by":"adis.jugo","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/","url":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/","name":"Retrieving fully qualified assembly, module and type names - Adis Jugo blog","isPartOf":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#primaryimage"},"image":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension_thumb.png","datePublished":"2012-02-12T14:27:49+00:00","author":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/a5ca63552094ce9d5a0440f3a1ac9a4c"},"breadcrumb":{"@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#primaryimage","url":"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension_thumb.png","contentUrl":"https:\/\/blog.sharedove.com\/adisjugo\/wp-content\/uploads\/2012\/02\/shell-extension_thumb.png"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/2012\/02\/12\/retrieving-fully-qualified-assembly-module-and-type-names\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.sharedove.com\/adisjugo\/"},{"@type":"ListItem","position":2,"name":"Retrieving fully qualified assembly, module and type names"}]},{"@type":"WebSite","@id":"https:\/\/blog.sharedove.com\/adisjugo\/#website","url":"https:\/\/blog.sharedove.com\/adisjugo\/","name":"Adis Jugo blog","description":"The Southern Side","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.sharedove.com\/adisjugo\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/a5ca63552094ce9d5a0440f3a1ac9a4c","name":"adis.jugo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.sharedove.com\/adisjugo\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/cc5a23cf1bd0b9d8401c9dd65c6c141041ec0c6e37eedbb511779e4a40a198fd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/cc5a23cf1bd0b9d8401c9dd65c6c141041ec0c6e37eedbb511779e4a40a198fd?s=96&d=mm&r=g","caption":"adis.jugo"},"url":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/author\/adisjugo\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/posts\/767","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/comments?post=767"}],"version-history":[{"count":0,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/posts\/767\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/media?parent=767"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/categories?post=767"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.sharedove.com\/adisjugo\/index.php\/wp-json\/wp\/v2\/tags?post=767"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}