/// <summary> /// Demonstrates how to store custom attributes and elements on a <see cref="File"/> element using the built in /// generic extension support. /// </summary> public static void StoreGenericExtension() { IExtensible extensible; GenericExtension extension; File file; // This namespace will be stored on the document element like: <xliff xmlns:pre1="urn:custom:extension:1.0" const string customNamespace = "urn:custom:extension:1.0"; const string customPrefix = "pre1"; file = new File("f1"); extensible = file; extension = new GenericExtension("custom"); // Create custom attributes that look like: <file id="f1" pre1:attr1="value1" pre1:attr2="value2"> if (extensible.SupportsAttributeExtensions) { extension.AddAttribute(new GenericExtensionAttribute(customPrefix, customNamespace, "attr1", "value1")); extension.AddAttribute(new GenericExtensionAttribute(customPrefix, customNamespace, "attr2", "value2")); extensible.Extensions.Add(extension); } // Create a custom element that looks like: <pre1:element1 pre1:attr1="value1" /> if (extensible.SupportsElementExtensions) { ElementInfo info; GenericElement element; element = new GenericElement(); element.SetAttribute(customPrefix, customNamespace, "attr1", "value1"); info = new ElementInfo(new XmlNameInfo(customPrefix, customNamespace, "element1"), element); extension.AddChild(info); } }
public void TestFromDynamic() { dynamic d = new DynamicExpandoObject(); d.Name = "fireasy"; var obj = (Data1)GenericExtension.To <Data1>(d); Assert.AreEqual("fireasy", obj.Name); }
public void Test11() { dynamic d = new System.Dynamic.ExpandoObject(); d.name = "dadfsafasdf"; //var d = new product { name = "dfaf" }; var p1 = GenericExtension.To <product1>(d); Console.WriteLine((string)p1.name); }
public void SerializeExpandoObjectTest() { dynamic obj = new ExpandoObject(); obj.Name = "aaaa"; obj.IsOld = true; obj.Age = 12.5; obj.Items = new[] { 34, 55, 66 }; var dd = new { A = 43434 }; var serializer = new XmlSerializer(); var json = serializer.Serialize(GenericExtension.Extend(obj, dd)); Console.WriteLine(json); }
static StatisticsViewModel() { defaultSortColumn = GenericExtension.GetMemberName <HistoryRecord>(r => r.Score); }
/// <summary> /// Creates an extension with every element and attribute and adds it to the container. /// </summary> /// <param name="extensible">The container to add the extension to.</param> private void AddExtension(IExtensible extensible) { GenericExtension extension; extension = new GenericExtension("extension"); if (extensible.SupportsAttributeExtensions) { extension.AddAttribute(new GenericExtensionAttribute("ext", "ext:namespace", "attr2", "value")); } if (extensible.SupportsElementExtensions) { GenericElement element; element = new GenericElement(); element.SetAttribute("ext", "ext:namespace", "attr1", "value"); extension.AddChild(new ElementInfo(new XmlNameInfo("ext", "ext:namespace", "extelement"), element)); } extensible.Extensions.Add(extension); }
public void Extensibility_WithInvalidElementPrefix() { XliffDocument document; IExtensible extensible; IExtension extension; Segment segment; Unit unit; document = new XliffDocument("en-us"); document.Files.Add(new File("f1")); extensible = document.Files[0]; // Unit information. unit = new Unit("u1"); document.Files[0].Containers.Add(unit); extensible = unit; // Segment information. segment = new Segment("s1"); segment.Source = new Source(); segment.State = TranslationState.Initial; unit.Resources.Add(segment); Console.WriteLine("Test with null prefix."); try { extensible.Extensions.Clear(); extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); extension.AddAttribute(new TestAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 1")); extension.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Namespace1, "name"), new Source())); TestUtilities.GetDocumentContents(document, " "); Assert.Fail("Expected InvalidXmlSpecifierException to be thrown."); } catch (InvalidXmlSpecifierException e) { Assert.IsInstanceOfType(e.InnerException, typeof(ArgumentNullException), "Exception is incorrect."); } Console.WriteLine("Test with invalid prefix."); try { extensible.Extensions.Clear(); extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); extension.AddAttribute(new TestAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 1")); extension.AddChild(new ElementInfo(new XmlNameInfo("a:b", ExtensibilityTests.Namespace1, "name"), new Source())); TestUtilities.GetDocumentContents(document, " "); Assert.Fail("Expected InvalidXmlSpecifierException to be thrown."); } catch (InvalidXmlSpecifierException e) { Assert.IsInstanceOfType(e.InnerException, typeof(XmlException), "Exception is incorrect."); } Console.WriteLine("Test with null namespace."); try { extensible.Extensions.Clear(); extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); extension.AddAttribute(new TestAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 1")); extension.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Prefix1, null, "name"), new Source())); TestUtilities.GetDocumentContents(document, " "); Assert.Fail("Expected InvalidXmlSpecifierException to be thrown."); } catch (InvalidXmlSpecifierException e) { Assert.IsInstanceOfType(e.InnerException, typeof(ArgumentNullException), "Exception is incorrect."); } Console.WriteLine("Test with null local name."); try { extensible.Extensions.Clear(); extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); extension.AddAttribute(new TestAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 1")); extension.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, null), new Source())); TestUtilities.GetDocumentContents(document, " "); Assert.Fail("Expected InvalidXmlSpecifierException to be thrown."); } catch (InvalidXmlSpecifierException e) { Assert.IsInstanceOfType(e.InnerException, typeof(ArgumentNullException), "Exception is incorrect."); } Console.WriteLine("Test with differing namespace."); try { extensible.Extensions.Clear(); extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); extension.AddAttribute(new TestAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 1")); extension.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Prefix1, "namespace", "name"), new Source())); TestUtilities.GetDocumentContents(document, " "); Assert.Fail("Expected InvalidXmlSpecifierException to be thrown."); } catch (InvalidOperationException) { } }
public void Extensibility_SerializeWithRegisteredExtensions() { GenericElement child1; GenericElement child2; XliffDocument document; IExtensible extensible; IExtension extension; Segment segment; Source source; Unit unit; // Document extensions. document = new XliffDocument("en-us"); extensible = document; extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); extension.AddAttribute(new GenericExtensionAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 1")); extension.AddAttribute(new GenericExtensionAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute2", "attribute 2")); extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); extension.AddAttribute(new GenericExtensionAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute1", "attribute 3")); extension.AddAttribute(new GenericExtensionAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute2", "attribute 4")); // File extensions. document.Files.Add(new File("f1")); extensible = document.Files[0]; extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); extension.AddAttribute(new GenericExtensionAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 5")); extension.AddAttribute(new GenericExtensionAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute2", "attribute 6")); extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); extension.AddAttribute(new GenericExtensionAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute1", "attribute 7")); extension.AddAttribute(new GenericExtensionAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute2", "attribute 8")); // Child 0. child1 = new GenericElement(); child1.SetAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 9"); child1.SetAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute2", "attribute 10"); extension.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "element1"), child1)); child2 = new GenericElement(); child2.SetAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute3", "attribute 11"); child1.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "element2"), child2)); source = new Source(); source.Language = "de-de"; source.Space = Preservation.Preserve; child2.AddChild(new ElementInfo(new XmlNameInfo("source"), source)); // Child 1. child1 = new GenericElement(); child1.SetAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 12"); child1.SetAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute2", "attribute 13"); extension.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "element1"), child1)); child2 = new GenericElement(); child2.SetAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute3", "attribute 14"); child1.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Namespace1, "element2"), child2)); child2.AddChild(new ElementInfo(new XmlNameInfo((string)null), new PlainText("text 1"))); // Child 2. child1 = new GenericElement(); child1.SetAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute1", "attribute 15"); child1.SetAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute2", "attribute 16"); child1.SetAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute1", "attribute 17"); extension.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "element1"), child1)); child2 = new GenericElement(); child2.SetAttribute(ExtensibilityTests.Prefix1, ExtensibilityTests.Namespace1, "attribute2", "attribute 18"); child1.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Namespace2, "element1"), child2)); child2.AddChild(new ElementInfo(new XmlNameInfo((string)null), new PlainText("text 3"))); // Child 3. child1 = new GenericElement(); child1.SetAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute1", "attribute 19"); child1.SetAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute2", "attribute 20"); extension.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "element1"), child1)); child2 = new GenericElement(); child2.SetAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute3", "attribute 21"); child1.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Namespace2, "element2"), child2)); child2.AddChild(new ElementInfo(new XmlNameInfo("target"), new Target())); // Child 4. child1 = new GenericElement(); child1.SetAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute1", "attribute 22"); child1.SetAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute2", "attribute 23"); extension.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "element1"), child1)); child2 = new GenericElement(); child2.SetAttribute(ExtensibilityTests.Prefix2, ExtensibilityTests.Namespace2, "attribute3", "attribute 24"); child1.AddChild(new ElementInfo(new XmlNameInfo(ExtensibilityTests.Namespace2, "element2"), child2)); child2.AddChild(new ElementInfo(new XmlNameInfo((string)null), new PlainText("text 2"))); // Unit information. unit = new Unit("u1"); document.Files[0].Containers.Add(unit); extensible = unit; extension = new GenericExtension("extension"); extensible.Extensions.Add(extension); // Segment information. segment = new Segment("s1"); segment.Source = new Source(); segment.State = TranslationState.Initial; unit.Resources.Add(segment); Assert.AreEqual( TestUtilities.GetFileContents(TestData.DocumentWithExtensions), TestUtilities.GetDocumentContents(document, " "), "Document contents are incorrect."); }