Skip to content

Commit

Permalink
Renamed Materializer to TypeGenerator and added sln file
Browse files Browse the repository at this point in the history
  • Loading branch information
aeinbu committed Dec 28, 2019
1 parent 1d56c3c commit dde4f35
Show file tree
Hide file tree
Showing 5 changed files with 59 additions and 11 deletions.
2 changes: 1 addition & 1 deletion Materializer.Tests/Materializer_Create.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ namespace Materializer.Tests
{
public class Materializer_Create
{
public Lazy<Materializer> _lazy = new Lazy<Materializer>(() => new Materializer("Dynamic_Assembly_for_Materializer_Create_Tests", false));
public Lazy<TypeGenerator> _lazy = new Lazy<TypeGenerator>(() => new TypeGenerator("Dynamic_Assembly_for_Materializer_Create_Tests", false));

public interface IOne
{
Expand Down
2 changes: 1 addition & 1 deletion Materializer.Tests/Materializer_Newtonsoft.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace Materializer.Tests
{
public class Materializer_Newtonsoft
{
public Lazy<Materializer> _lazy = new Lazy<Materializer>(() => new Materializer("Dynamic_Assembly_for_Materializer_Newtonsoft_Tests", false));
public Lazy<TypeGenerator> _lazy = new Lazy<TypeGenerator>(() => new TypeGenerator("Dynamic_Assembly_for_Materializer_Newtonsoft_Tests", false));

public interface IOne
{
Expand Down
2 changes: 1 addition & 1 deletion Materializer.Tests/Materializer_Serializable.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ namespace Materializer.Tests
{
public class Materializer_Serializable
{
public Lazy<Materializer> _lazy = new Lazy<Materializer>(() => new Materializer("Dynamic_Assembly_for_Materializer_Serializable_Tests", true));
public Lazy<TypeGenerator> _lazy = new Lazy<TypeGenerator>(() => new TypeGenerator("Dynamic_Assembly_for_Materializer_Serializable_Tests", true));

public interface IOne
{
Expand Down
48 changes: 48 additions & 0 deletions Materializer.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26124.0
MinimumVisualStudioVersion = 15.0.26124.0
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Materializer", "Materializer\Materializer.csproj", "{A3B57534-3380-4D70-810F-342DE9AA8A53}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Materializer.Tests", "Materializer.Tests\Materializer.Tests.csproj", "{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Debug|x64.ActiveCfg = Debug|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Debug|x64.Build.0 = Debug|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Debug|x86.ActiveCfg = Debug|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Debug|x86.Build.0 = Debug|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Release|Any CPU.Build.0 = Release|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Release|x64.ActiveCfg = Release|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Release|x64.Build.0 = Release|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Release|x86.ActiveCfg = Release|Any CPU
{A3B57534-3380-4D70-810F-342DE9AA8A53}.Release|x86.Build.0 = Release|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Debug|x64.ActiveCfg = Debug|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Debug|x64.Build.0 = Debug|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Debug|x86.ActiveCfg = Debug|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Debug|x86.Build.0 = Debug|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Release|Any CPU.Build.0 = Release|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Release|x64.ActiveCfg = Release|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Release|x64.Build.0 = Release|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Release|x86.ActiveCfg = Release|Any CPU
{5A59D04C-69E7-457D-BBF0-9C81ADF0821C}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
EndGlobal
16 changes: 8 additions & 8 deletions Materializer/Materializer.cs → Materializer/TypeBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@

namespace Materializer
{
public class Materializer
public class TypeGenerator
{
private readonly ModuleBuilder _moduleBuilder;
private readonly AssemblyBuilder _dynamicAssembly;
private readonly bool _forSerializableTypes;
private readonly bool _forSerialization;
private readonly Dictionary<Type, Type> _typeCache = new Dictionary<Type, Type>();

public Materializer(string assemblyName = "Dynamic_assembly_for_Materializer_created_types", bool forSerializable = false)
public TypeGenerator(string assemblyName = "Dynamic_assembly_for_Materializer_created_types", bool forSerialization = false)
{
_dynamicAssembly = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(assemblyName), AssemblyBuilderAccess.Run);
_moduleBuilder = _dynamicAssembly.DefineDynamicModule(assemblyName);
_forSerializableTypes = forSerializable;
_forSerialization = forSerialization;

if (_forSerializableTypes)
if (_forSerialization)
{
var currentAppDomain = AppDomain.CurrentDomain;
currentAppDomain.AssemblyResolve += new ResolveEventHandler(DynamicAssemblyResolvehandler);
Expand Down Expand Up @@ -76,10 +76,10 @@ private Type CreateType<T>(Type interfaceOfTypeToCreate) where T : class
return _typeCache[interfaceOfTypeToCreate];
}

var typename = $"{interfaceOfTypeToCreate.Name}_{Guid.NewGuid()}";
var typename = $"{interfaceOfTypeToCreate.Name}";
var typeBuilder = _moduleBuilder.DefineType(typename, TypeAttributes.Public);

if (_forSerializableTypes)
if (_forSerialization)
{
var serializableAttributeTypeInfo = typeof(SerializableAttribute);
var serializableAttributeConstructorInfo = serializableAttributeTypeInfo.GetConstructor(new Type[] { });
Expand All @@ -93,7 +93,7 @@ private Type CreateType<T>(Type interfaceOfTypeToCreate) where T : class
}


private void ImplementInterfaceProperties(Type interfaceOfTypeToCreate, TypeBuilder typeBuilder)
private void ImplementInterfaceProperties(Type interfaceOfTypeToCreate, System.Reflection.Emit.TypeBuilder typeBuilder)
{
typeBuilder.AddInterfaceImplementation(interfaceOfTypeToCreate);
foreach (var implementedInterfaceType in interfaceOfTypeToCreate.GetInterfaces())
Expand Down

0 comments on commit dde4f35

Please sign in to comment.