January, 2014

  • Kirill Osenkov

    Creating an instance of an open generic type without specifying a type argument

    • 5 Comments

    My fellow Roslyn tester @vreshetnikov has found not one, but two ways to do the impossible:

    1:

    using System;
     
    class Program
    {
        static void Main()
        {
            var open = Enum.ToObject(typeof(C<>.E), 0);
            Console.WriteLine(open.GetType());
        }
    }
     
    class C<T>
    {
        public enum E { }
    }

    2:

    using System;
     
    class Program
    {
        static void Main()
        {
            Action<C<int>.E> a = M;
            var open = a.Method.GetGenericMethodDefinition().GetParameters()[0].DefaultValue;
            Console.WriteLine(open.GetType());
        }
     
        static void M<T>(C<T>.E e = 0) { }
    }
     
    class C<T>
    {
        public enum E { }
    }
  • Kirill Osenkov

    Saving Regedit Favorites in a .reg file

    • 2 Comments

    Regedit.exe has a useful feature – Favorites menu, you can add an often used registry location to favorites to quickly expand to it in the tree view.

    But did you know that favorites themselves are stored in registry and so you can have a RegeditFavorites.reg that you run to quickly fill the Favorites menu with your most-used defaults? This is really helpful when configuring a new machine.

    To create this file:

    1. Go to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Favorites
    2. File –> Export –> Selected branch, save the .reg file.

    It is very meta that the actual favorites location in the registry is also one of my favorites! Here’s my favorites file:

    Windows Registry Editor Version 5.00

    [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Regedit\Favorites]
    "HKCU\\Software\\Microsoft\\VisualStudio\\12.0"="Computer\\HKEY_CURRENT_USER\\Software\\Microsoft\\VisualStudio\\12.0"
    "AeDebug"="Computer\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AeDebug"
    "DebugApplications"="Computer\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\Windows Error Reporting\\DebugApplications"
    "HKCU\\S\\M\\VS\\12.0\\ReferenceManager"="Computer\\HKEY_CURRENT_USER\\Software\\Microsoft\\VisualStudio\\12.0\\ReferenceManager"
    "EnableVSIPLogging"="Computer\\HKEY_CURRENT_USER\\Software\\Microsoft\\VisualStudio\\12.0\\General"
    "Favorites"="Computer\\HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Applets\\Regedit\\Favorites"
    "VSIP InstallDir"="Computer\\HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\VSIP\\12.0"
    "Open with Notepad2"="Computer\\HKEY_CLASSES_ROOT\\*\\shell\\Notepad2"

Page 1 of 1 (2 items)