Skip to content

Commit 7d1f292

Browse files
committed
Inherit parts to child parts
1 parent f19651e commit 7d1f292

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/DocumentFormat.OpenXml/Framework/PartConstraintCollection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public static PartConstraintCollection Create<T>(Func<Type, OpenXmlElementData>
2525
{
2626
var collection = new PartConstraintCollection();
2727

28-
foreach (var constraint in type.GetTypeInfo().GetCustomAttributes(inherit: false).OfType<T>())
28+
foreach (var constraint in type.GetTypeInfo().GetCustomAttributes(inherit: true).OfType<T>())
2929
{
3030
collection.Add(new PartConstraintRule(dataFactory(constraint.ConstraintType).Info, constraint.MinOccursIsNonZero, constraint.MaxOccursGreatThanOne));
3131
}

test/DocumentFormat.OpenXml.Packaging.Tests/PartConstraintCollectionTypes.cs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33

44
using DocumentFormat.OpenXml.Framework;
55
using System;
6+
using System.IO;
67
using Xunit;
78

89
#pragma warning disable IDE0028 // Simplify collection initialization
@@ -78,6 +79,25 @@ public void ContainsRelationshipTest()
7879
Assert.False(collection.ContainsRelationship("b"));
7980
}
8081

82+
[Fact]
83+
public void PartsAreInherited()
84+
{
85+
using (var m = new MemoryStream())
86+
using (var doc = SpreadsheetDocument.Create(m, SpreadsheetDocumentType.Workbook, true))
87+
{
88+
var wb = doc.AddWorkbookPart();
89+
90+
// Adding new worksheet part using custom worksheetpart derived class
91+
var ws = wb.AddNewPart<PsWorksheetPart>();
92+
93+
Assert.NotNull(ws.AddNewPart<SpreadsheetPrinterSettingsPart>());
94+
}
95+
}
96+
97+
private sealed class PsWorksheetPart : WorksheetPart
98+
{
99+
}
100+
81101
[RelationshipType(Relationship)]
82102
private class ConstraintTest1
83103
{

0 commit comments

Comments
 (0)