public void CanAddAttributeToGeneratedModelClass() { CodeDomClassModel generator = new CodeDomClassModel(this.csFilePath, "ClassAttributeTest"); generator.AddClassAttribute(new AttributeModel("Serializable")); generator.AddClassAttribute(new AttributeModel("XmlRoot", new object[] { "add" })); this.namesp.References.Add(NamespaceReference.System); this.namesp.References.Add(NamespaceReference.SystemXmlSerialization); generator.GenerateCCsharpClass(this.namesp); using (StreamReader reader = File.OpenText(Path.Combine(this.csFilePath, "ClassAttributeTest.cs"))) { string fileContents = reader.ReadToEnd(); Assert.IsTrue(fileContents.Contains("[Serializable()]")); Assert.IsTrue(fileContents.Contains("[XmlRoot(\"add\")]")); } generator.CompileClassFromGeneratedCsFile(this.namesp); string assemblyName = Path.Combine(this.csFilePath, $"{this.namesp.Name}.dll"); loadAssemblyInSecondaryAppDomain( assemblyName, generatedAssembly => { Type generatedType = generatedAssembly.GetType($"{namesp.Name}.ClassAttributeTest"); Assert.IsNotNull(generatedType); }); }
public void CanCompileGeneratedFile() { CodeDomClassModel generator = new CodeDomClassModel(this.csFilePath, className); generator.CompileClassFromGeneratedCsFile(this.namesp); string assemblyName = Path.Combine(this.csFilePath, $"{this.namesp.Name}.dll"); Assert.IsTrue(File.Exists(assemblyName)); }
public void CanInstantiateClassFromGeneratedFile() { CodeDomClassModel generator = new CodeDomClassModel(this.csFilePath, className); generator.CompileClassFromGeneratedCsFile(this.namesp); string assemblyName = Path.Combine(this.csFilePath, $"{this.namesp.Name}.dll"); Assembly generatedAssembly = Assembly.LoadFile(assemblyName); Type generatedType = generatedAssembly.GetType($"{namesp.Name}.{className}"); object generatedObject = Activator.CreateInstance(generatedType); Assert.IsNotNull(generatedObject); }
public void CanAddPropertyToGeneratedModel() { string propName = "Id"; CodeDomClassModel generator = new CodeDomClassModel(this.csFilePath, className); generator.AddProperty(propName, typeof(int)); generator.CompileClassFromGeneratedCsFile(this.namesp); string assemblyName = Path.Combine(this.csFilePath, $"{this.namesp.Name}.dll"); Assembly generatedAssembly = Assembly.LoadFile(assemblyName); Type generatedType = generatedAssembly.GetType($"{namesp.Name}.{className}"); var accessor = TypeAccessor.Create(generatedType); object generatedObject = Activator.CreateInstance(generatedType); accessor[generatedObject, propName] = 9999; object result = accessor[generatedObject, propName]; Assert.AreEqual(9999, (int)result); }