[ { HintName: ProxyInterfaceSourceGeneratorTests.Source.IFoo3Proxy.g.cs, Source: //---------------------------------------------------------------------------------------- // // This code was generated by https://github.com/specklesystems/ProxyGenerator. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //---------------------------------------------------------------------------------------- #nullable enable using System; namespace ProxyInterfaceSourceGeneratorTests.Source { public partial interface IFoo3Proxy : global::ProxyInterfaceSourceGeneratorTests.Source.IFoo3 { global::ProxyInterfaceSourceGeneratorTests.Source.Foo3 _Instance { get; } } } #nullable restore }, { HintName: ProxyInterfaceSourceGeneratorTests.Source.IBar3Proxy.g.cs, Source: //---------------------------------------------------------------------------------------- // // This code was generated by https://github.com/specklesystems/ProxyGenerator. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //---------------------------------------------------------------------------------------- #nullable enable using System; namespace ProxyInterfaceSourceGeneratorTests.Source { public partial interface IBar3Proxy : global::ProxyInterfaceSourceGeneratorTests.Source.IBar3 { global::ProxyInterfaceSourceGeneratorTests.Source.Bar3 _Instance { get; } } } #nullable restore }, { HintName: ProxyInterfaceSourceGeneratorTests.Source.Foo3Proxy.g.cs, Source: //---------------------------------------------------------------------------------------- // // This code was generated by https://github.com/specklesystems/ProxyGenerator. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //---------------------------------------------------------------------------------------- #nullable enable using System; namespace ProxyInterfaceSourceGeneratorTests.Source { public partial class Foo3Proxy : global::ProxyInterfaceSourceGeneratorTests.Source.IFoo3 { public global::ProxyInterfaceSourceGeneratorTests.Source.Foo3 _Instance { get; } public global::ProxyInterfaceSourceGeneratorTests.Source.IBar3 Weird() { var result_867036441 = _Instance.Weird(); return Mapster.TypeAdapter.Adapt(result_867036441); } public Foo3Proxy(global::ProxyInterfaceSourceGeneratorTests.Source.Foo3 instance) { _Instance = instance; } static Foo3Proxy() { Mapster.TypeAdapterConfig.NewConfig().ConstructUsing(instance969373361 => new global::ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy(instance969373361)); Mapster.TypeAdapterConfig.NewConfig().MapWith(proxy339001485 => ((global::ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy) proxy339001485)._Instance); } } } #nullable restore }, { HintName: ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy.g.cs, Source: //---------------------------------------------------------------------------------------- // // This code was generated by https://github.com/specklesystems/ProxyGenerator. // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //---------------------------------------------------------------------------------------- #nullable enable using System; namespace ProxyInterfaceSourceGeneratorTests.Source { public partial class Bar3Proxy : global::ProxyInterfaceSourceGeneratorTests.Source.IBar3 { public global::ProxyInterfaceSourceGeneratorTests.Source.Bar3 _Instance { get; } public Bar3Proxy(global::ProxyInterfaceSourceGeneratorTests.Source.Bar3 instance) { _Instance = instance; } static Bar3Proxy() { Mapster.TypeAdapterConfig.NewConfig().ConstructUsing(instance969373361 => new global::ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy(instance969373361)); Mapster.TypeAdapterConfig.NewConfig().MapWith(proxy339001485 => ((global::ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy) proxy339001485)._Instance); } } } #nullable restore }, { HintName: Speckle.ProxyGenerator.Extra.g.cs, Source: //---------------------------------------------------------------------------------------- // // This code was generated by https://github.com/specklesystems/ProxyGenerator // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. // //---------------------------------------------------------------------------------------- #nullable enable using System; namespace Speckle.ProxyGenerator { [AttributeUsage(AttributeTargets.Interface)] internal sealed class ProxyAttribute : Attribute { public Type Type { get; } public ImplementationOptions Options { get; } public ProxyClassAccessibility Accessibility { get; } public string[]? MembersToIgnore { get; } public ProxyAttribute(Type type) : this(type, ImplementationOptions.None, ProxyClassAccessibility.Public) { } public ProxyAttribute(Type type, ImplementationOptions options) : this(type, options, ProxyClassAccessibility.Public) { } public ProxyAttribute(Type type, ProxyClassAccessibility accessibility) : this(type, ImplementationOptions.None, accessibility) { } public ProxyAttribute(Type type, ImplementationOptions options, ProxyClassAccessibility accessibility) : this(type, options, accessibility, null) { } public ProxyAttribute(Type type, string[]? membersToIgnore) : this(type, ImplementationOptions.None, ProxyClassAccessibility.Public, null) { } public ProxyAttribute(Type type, ImplementationOptions options, string[]? membersToIgnore) : this(type, options, ProxyClassAccessibility.Public, null) { } public ProxyAttribute(Type type, ImplementationOptions options, ProxyClassAccessibility accessibility, string[]? membersToIgnore) { Type = type; Options = options; Accessibility = accessibility; MembersToIgnore = membersToIgnore; } } [Flags] internal enum ProxyClassAccessibility { Public = 0, Internal = 1 } [Flags] internal enum ImplementationOptions { None = 0, ProxyBaseClasses = 1, ProxyInterfaces = 2, UseExtendedInterfaces = 4, ProxyForBaseInterface = 8 } public static class ProxyMap { private static readonly global::System.Collections.Concurrent.ConcurrentDictionary s_revitToInterfaceMap = new(); private static readonly global::System.Collections.Concurrent.ConcurrentDictionary s_proxyToInterfaceMap = new(); private static readonly global::System.Collections.Concurrent.ConcurrentDictionary s_interfaceToRevit = new(); private static readonly global::System.Collections.Concurrent.ConcurrentDictionary> s_proxyFactory = new(); static ProxyMap() { Add(x => new ProxyInterfaceSourceGeneratorTests.Source.Foo3Proxy(x)); Add(x => new ProxyInterfaceSourceGeneratorTests.Source.Bar3Proxy(x)); } private static void Add(Func f) where TInterface : notnull where TProxy : TInterface { s_revitToInterfaceMap.TryAdd(typeof(T), typeof(TInterface)); s_proxyToInterfaceMap.TryAdd(typeof(TProxy), typeof(TInterface)); s_proxyFactory.TryAdd(typeof(TInterface), w => f((T)w)); s_interfaceToRevit.TryAdd(typeof(TInterface), typeof(T)); } public static Type? GetMappedTypeFromHostType(Type type) { if (s_revitToInterfaceMap.TryGetValue(type, out var t)) { return t; } return null; } public static Type? GetMappedTypeFromProxyType(Type type) { if (s_proxyToInterfaceMap.TryGetValue(type, out var t)) { return t; } return null; } public static Type? GetHostTypeFromMappedType(Type type) { if (s_interfaceToRevit.TryGetValue(type, out var t)) { return t; } return null; } public static object CreateProxy(Type type, object toWrap) => s_proxyFactory[type](toWrap); public static T CreateProxy(object toWrap) => (T)CreateProxy(typeof(T), toWrap); } public static class MapsterAdapter { public static TDestination? AdaptNull(object? source) { if (source is null) { return default; } return Mapster.TypeAdapter.Adapt(source); } } #nullable restore } } ]