LegacyWrapper v3.0.1.0 Release Notes

Release Date: 2019-02-04 // about 5 years ago
    • ➕ Add a check that explicitly tests if the provided interface is public. This is necessary for generating dynamic proxies with Castle.

Previous changes from v3.0.0.0

  • LegacyWrapper 3.0 is a major rewrite and not backwards compatible to prior versions.

    🚀 See this blog post for details.

    • The old Invoke<TDelegate>() method has been replaced by a much simpler and more type-safe pattern:

      // Define a proxy interface with matching method names and signatures// The interface must be derived from IDisposable![LegacyDllImport("User32.dll")]public interface IUser32Dll : IDisposable{ [LegacyDllMethod(CallingConvention = CallingConvention.Winapi)] int GetSystemMetrics(int nIndex); }// Create configurationIWrapperConfig configuration = WrapperConfigBuilder.Create() .TargetArchitecture(TargetArchitecture.X86) .Build();// Create new Wrapper client providing the proxy interface// Remember to ensure a call to the Dispose()-Method!using (var client = WrapperProxyFactory<IUser32Dll>.GetInstance(configuration)) { // Make calls - it's that simple!int x = client.GetSystemMetrics(0); int y = client.GetSystemMetrics(1); }

    Therefore, there is no longer the need to:

    • Create a delegate
    • Cast result values
    • Pass function parameters as array of object
    • Supply the method name as magic string

    Other things that changed:

    • 📚 Documentation on classes and methods has been improved
    • ✅ There are more unit tests now (especially edge cases)