Skip to content

Commit ed20ffd

Browse files
committed
use a new c# syntax for MemberAccessors
1 parent c624aa7 commit ed20ffd

File tree

47 files changed

+434
-316
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+434
-316
lines changed

sources/RevitDBExplorer/Domain/DataModel/Accessors/ReadResult.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,7 @@ public ReadResult(string label, string accessorName, bool canBeSnooped = false,
3838
CanBeVisualized = canBeVisualized;
3939
State = state;
4040
}
41+
42+
public static ReadResult Forbidden => new ReadResult("<access denied / forbidden>", null, false, null);
4143
}
4244
}

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/AssetProperties/AssetProperties_Item.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,14 @@
22
using System.Linq.Expressions;
33
using Autodesk.Revit.DB.Visual;
44
using RevitDBExplorer.Domain.DataModel.Accessors;
5-
using RevitDBExplorer.Domain.DataModel.ValueContainers.Base;
65

76
// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md
87

98
namespace RevitDBExplorer.Domain.DataModel.MemberAccessors
109
{
11-
internal class AssetProperties_Item : MemberAccessorTypedWithDefaultPresenter<AssetProperties>, ICanCreateMemberAccessor
12-
{
13-
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() { yield return (AssetProperties x) => x[0]; }
10+
internal class AssetProperties_Item : MemberAccessorByType<AssetProperties>, ICanCreateMemberAccessor
11+
{
12+
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() => [ (AssetProperties x) => x[0] ];
1413

1514

1615
public override ReadResult Read(SnoopableContext context, AssetProperties assetProperties) => new()
@@ -19,7 +18,7 @@ internal class AssetProperties_Item : MemberAccessorTypedWithDefaultPresenter<As
1918
CanBeSnooped = assetProperties.Size > 0
2019
};
2120

22-
public override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, AssetProperties assetProperties, IValueContainer state)
21+
protected override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, AssetProperties assetProperties)
2322
{
2423
for (int i = 0; i < assetProperties.Size; i++)
2524
{

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/CurtainGrid/CurtainGrid_GetCell.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
using System.Collections.Generic;
22
using System.Linq.Expressions;
33
using Autodesk.Revit.DB;
4+
using RevitDBExplorer.Domain.DataModel.Accessors;
45

56
// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md
67

78
namespace RevitDBExplorer.Domain.DataModel.MemberAccessors
89
{
910
internal class CurtainGrid_GetCell : MemberAccessorByType<CurtainGrid>, ICanCreateMemberAccessor
1011
{
11-
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() { yield return (CurtainGrid x) => x.GetCell(ElementId.InvalidElementId, ElementId.InvalidElementId); }
12+
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() => [ (CurtainGrid x) => x.GetCell(ElementId.InvalidElementId, ElementId.InvalidElementId) ];
1213

1314

14-
protected override bool CanBeSnoooped(Document document, CurtainGrid grid) => true;
15-
protected override string GetLabel(Document document, CurtainGrid grid)
16-
{
17-
string value = $"[CurtainCell]";
18-
return value;
19-
}
20-
protected override IEnumerable<SnoopableObject> Snooop(Document document, CurtainGrid grid)
15+
public override ReadResult Read(SnoopableContext context, CurtainGrid grid) => new()
16+
{
17+
Label = Labeler.GetLabelForCollection(nameof(CurtainCell), null),
18+
CanBeSnooped = true
19+
};
20+
21+
22+
protected override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, CurtainGrid grid)
2123
{
2224
var uLineIds = grid.GetUGridLineIds();
2325
var vLineIds = grid.GetVGridLineIds();
@@ -30,7 +32,7 @@ protected override IEnumerable<SnoopableObject> Snooop(Document document, Curtai
3032
{
3133
var cell = grid.GetCell(uLineId, vLineId);
3234

33-
yield return new SnoopableObject(document, cell) { Name = $"uGridLineId: {uLineId}, vGridLineId: {vLineId}" };
35+
yield return new SnoopableObject(context.Document, cell) { Name = $"uGridLineId: {uLineId}, vGridLineId: {vLineId}" };
3436
}
3537
}
3638
}

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/CurtainGrid/CurtainGrid_GetPanel.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,25 @@
11
using System.Collections.Generic;
22
using System.Linq.Expressions;
33
using Autodesk.Revit.DB;
4+
using RevitDBExplorer.Domain.DataModel.Accessors;
45

56
// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md
67

78
namespace RevitDBExplorer.Domain.DataModel.MemberAccessors
89
{
910
internal class CurtainGrid_GetPanel : MemberAccessorByType<CurtainGrid>, ICanCreateMemberAccessor
1011
{
11-
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() { yield return (CurtainGrid x) => x.GetPanel(ElementId.InvalidElementId, ElementId.InvalidElementId); }
12+
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() => [ (CurtainGrid x) => x.GetPanel(ElementId.InvalidElementId, ElementId.InvalidElementId) ];
1213

1314

14-
protected override bool CanBeSnoooped(Document document, CurtainGrid grid) => true;
15-
protected override string GetLabel(Document document, CurtainGrid grid)
16-
{
17-
string value = $"[Panel]";
18-
return value;
19-
}
20-
protected override IEnumerable<SnoopableObject> Snooop(Document document, CurtainGrid grid)
15+
public override ReadResult Read(SnoopableContext context, CurtainGrid grid) => new()
16+
{
17+
Label = Labeler.GetLabelForCollection(nameof(Panel), null),
18+
CanBeSnooped = true
19+
};
20+
21+
22+
protected override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, CurtainGrid grid)
2123
{
2224
var uLineIds = grid.GetUGridLineIds();
2325
var vLineIds = grid.GetVGridLineIds();
@@ -30,7 +32,7 @@ protected override IEnumerable<SnoopableObject> Snooop(Document document, Curtai
3032
{
3133
var cell = grid.GetPanel(uLineId, vLineId);
3234

33-
yield return new SnoopableObject(document, cell) { Name = $"uGridLineId: {uLineId}, vGridLineId: {vLineId}" };
35+
yield return new SnoopableObject(context.Document, cell) { Name = $"uGridLineId: {uLineId}, vGridLineId: {vLineId}" };
3436
}
3537
}
3638
}
Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,39 @@
11
using System.Collections.Generic;
22
using System.Linq.Expressions;
33
using Autodesk.Revit.DB;
4+
using RevitDBExplorer.Domain.DataModel.Accessors;
45

56
// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md
67

78
namespace RevitDBExplorer.Domain.DataModel.MemberAccessors
89
{
910
internal class Curve_GetEndPoint : MemberAccessorByType<Curve>, ICanCreateMemberAccessor
1011
{
11-
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() { yield return (Curve x) => x.GetEndPoint(0); }
12+
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() => [ (Curve x) => x.GetEndPoint(0) ];
1213

1314

14-
protected override bool CanBeSnoooped(Document document, Curve curve) => curve.IsBound;
15-
protected override string GetLabel(Document document, Curve curve)
15+
public override ReadResult Read(SnoopableContext context, Curve curve) => new()
16+
{
17+
Label = GetLabel(curve),
18+
CanBeSnooped = curve.IsBound
19+
};
20+
private string GetLabel(Curve curve)
1621
{
1722
var p0 = curve.GetEndPoint(0);
1823
var p1 = curve.GetEndPoint(1);
1924

2025
string value = $"({p0.X:0.##}, {p0.Y:0.##}, {p0.Z:0.##}) - ({p1.X:0.##}, {p1.Y:0.##}, {p1.Z:0.##})";
2126
return value;
2227
}
23-
protected override IEnumerable<SnoopableObject> Snooop(Document document, Curve curve)
28+
29+
30+
protected override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, Curve curve)
2431
{
2532
var p0 = curve.GetEndPoint(0);
2633
var p1 = curve.GetEndPoint(1);
2734

28-
yield return new SnoopableObject(document, p0) { Index = 0, Name = "Start"};
29-
yield return new SnoopableObject(document, p1) { Index = 1, Name = "End" };
35+
yield return new SnoopableObject(context.Document, p0) { Index = 0, Name = "Start"};
36+
yield return new SnoopableObject(context.Document, p1) { Index = 1, Name = "End" };
3037
}
3138
}
3239
}
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
using System.Collections.Generic;
22
using System.Linq.Expressions;
3-
using Autodesk.Revit.DB;
43
using Autodesk.Revit.UI.Events;
4+
using RevitDBExplorer.Domain.DataModel.Accessors;
55

66
// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md
77

88
namespace RevitDBExplorer.Domain.DataModel.MemberAccessors
99
{
1010
internal class DialogBoxShowingEventArgs_OverrideResult : MemberAccessorByType<DialogBoxShowingEventArgs>, ICanCreateMemberAccessor
1111
{
12-
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() { yield return (DialogBoxShowingEventArgs x) => x.OverrideResult(0); }
12+
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() => [ (DialogBoxShowingEventArgs x) => x.OverrideResult(0) ];
13+
14+
15+
public override ReadResult Read(SnoopableContext context, DialogBoxShowingEventArgs value) => ReadResult.Forbidden;
1316

14-
15-
protected override bool CanBeSnoooped(Document document, DialogBoxShowingEventArgs value) => false;
16-
protected override string GetLabel(Document document, DialogBoxShowingEventArgs value) => QuoteGenerator.Deny();
1717
}
1818
}
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
using System.Collections.Generic;
22
using System.Linq.Expressions;
33
using Autodesk.Revit.DB;
4+
using RevitDBExplorer.Domain.DataModel.Accessors;
45

56
// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md
67

78
namespace RevitDBExplorer.Domain.DataModel.MemberAccessors
89
{
910
internal class Document_Close : MemberAccessorByType<Document>, ICanCreateMemberAccessor
1011
{
11-
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() { yield return (Document x) => x.Close(); yield return (Document x) => x.Close(true); }
12+
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() => [ (Document x) => x.Close(), (Document x) => x.Close(true) ];
1213

13-
14-
protected override bool CanBeSnoooped(Document document, Document value) => false;
15-
protected override string GetLabel(Document document, Document value) => QuoteGenerator.Deny();
14+
15+
public override ReadResult Read(SnoopableContext context, Document value) => ReadResult.Forbidden;
1616
}
1717
}

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/Document/Document_PlanTopology.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,27 @@
22
using System.Linq;
33
using System.Linq.Expressions;
44
using Autodesk.Revit.DB;
5+
using RevitDBExplorer.Domain.DataModel.Accessors;
56

67
// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md
78

89
namespace RevitDBExplorer.Domain.DataModel.MemberAccessors
910
{
1011
internal class Document_PlanTopology : MemberAccessorByType<Document>, ICanCreateMemberAccessor
1112
{
12-
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() { yield return (Document x, Phase phase) => x.get_PlanTopologies(phase); }
13+
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() => [ (Document x, Phase phase) => x.get_PlanTopologies(phase) ];
1314

1415

15-
protected override bool CanBeSnoooped(Document document, Document value) => false;// document.Phases.Size > 0;
16-
protected override string GetLabel(Document document, Document value) => $"[{nameof(PlanTopology)}]";
16+
public override ReadResult Read(SnoopableContext context, Document value) => new()
17+
{
18+
Label = Labeler.GetLabelForCollection(nameof(PlanTopology), null),
19+
CanBeSnooped = false
20+
};
21+
1722

18-
protected override IEnumerable<SnoopableObject> Snooop(Document document, Document value)
23+
protected override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, Document value)
1924
{
25+
var document = context.Document;
2026
var transaction = document.IsModifiable == false ? new Transaction(document, GetType().Name) : null;
2127
transaction?.Start();
2228
try

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/Element/Element_BoundingBox.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace RevitDBExplorer.Domain.DataModel.MemberAccessors
88
{
99
internal class Element_BoundingBox : MemberAccessorByFunc<Element, BoundingBoxXYZ>, ICanCreateMemberAccessor
1010
{
11-
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() { yield return (Element x, View v) => x.get_BoundingBox(v); }
11+
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() => [ (Element x, View v) => x.get_BoundingBox(v) ];
1212

1313

1414
public Element_BoundingBox() : base((document, element) => element.get_BoundingBox(document.ActiveView), Snoop)
@@ -19,6 +19,7 @@ public Element_BoundingBox() : base((document, element) => element.get_BoundingB
1919

2020
private static IEnumerable<SnoopableObject> Snoop(Document document, Element element)
2121
{
22+
//var document = context.Document;
2223
yield return new SnoopableObject(document, null, new[] { new SnoopableObject(document, element.get_BoundingBox(null)) }) { NamePrefix = "view:" };
2324
if (document.ActiveView != null)
2425
{

sources/RevitDBExplorer/Domain/DataModel/MemberAccessors/Element/Element_Geometry.cs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,27 +2,35 @@
22
using System.Collections.Generic;
33
using System.Linq.Expressions;
44
using Autodesk.Revit.DB;
5+
using RevitDBExplorer.Domain.DataModel.Accessors;
56

67
// (c) Revit Database Explorer https://github.com/NeVeSpl/RevitDBExplorer/blob/main/license.md
78

89
namespace RevitDBExplorer.Domain.DataModel.MemberAccessors
910
{
1011
internal sealed class Element_Geometry : MemberAccessorByType<Element>, ICanCreateMemberAccessor
1112
{
12-
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() { yield return (Element x, Options o) => x.get_Geometry(o); }
13-
13+
IEnumerable<LambdaExpression> ICanCreateMemberAccessor.GetHandledMembers() => [ (Element x, Options o) => x.get_Geometry(o) ];
1414

15-
protected override bool CanBeSnoooped(Document document, Element element)
15+
16+
public override ReadResult Read(SnoopableContext context, Element element) => new()
17+
{
18+
Label = Labeler.GetLabelForCollection(nameof(GeometryElement), null),
19+
CanBeSnooped = CanBeSnoooped(context.Document, element),
20+
};
21+
private bool CanBeSnoooped(Document document, Element element)
1622
{
1723
var options = element.ViewSpecific ? new Options() { View = document.ActiveView } : new Options();
1824
var geometry = element.get_Geometry(options);
1925
var canBeSnooped = geometry != null;
2026

2127
return canBeSnooped;
2228
}
23-
protected override string GetLabel(Document document, Element element) => $"[{nameof(GeometryElement)}]";
24-
protected override IEnumerable<SnoopableObject> Snooop(Document document, Element element)
29+
30+
31+
protected override IEnumerable<SnoopableObject> Snoop(SnoopableContext context, Element element)
2532
{
33+
var document = context.Document;
2634
var optionsForActiveView = new List<Options>();
2735
if (document.ActiveView != null)
2836
{

0 commit comments

Comments
 (0)