Skip to content

Commit 7985c91

Browse files
committed
Make GetCollectionItemTemplate public.
1 parent 119c9be commit 7985c91

6 files changed

Lines changed: 28 additions & 26 deletions

File tree

src/UnityMvvmToolkit.Core/BindingContextObjectProvider.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using UnityMvvmToolkit.Core.Enums;
77
using UnityMvvmToolkit.Core.Interfaces;
88
using UnityMvvmToolkit.Core.Internal;
9+
using UnityMvvmToolkit.Core.Internal.Extensions;
910
using UnityMvvmToolkit.Core.Internal.Interfaces;
1011
using UnityMvvmToolkit.Core.Internal.ObjectHandlers;
1112

@@ -26,7 +27,7 @@ public BindingContextObjectProvider(IValueConverter[] converters,
2627
_objectWrapperHandler = new ObjectWrapperHandler(_valueConverterHandler);
2728
_bindingContextHandler = new BindingContextHandler(new BindingContextMemberProvider());
2829

29-
_collectionItemTemplates = collectionItemTemplates;
30+
_collectionItemTemplates = collectionItemTemplates ?? ImmutableDictionary.Empty<Type, object>();
3031
}
3132

3233
public IObjectProvider WarmupAssemblyViewModels()
@@ -137,23 +138,23 @@ public void ReturnCommandWrapper(IBaseCommand command, CommandBindingData bindin
137138
}
138139
}
139140

141+
public TValue GetCollectionItemTemplate<TKey, TValue>()
142+
{
143+
if (_collectionItemTemplates.TryGetValue(typeof(TKey), out var itemTemplate))
144+
{
145+
return (TValue) itemTemplate;
146+
}
147+
148+
throw new NullReferenceException($"Item template for '{typeof(TKey)}' not found.");
149+
}
150+
140151
public void Dispose()
141152
{
142153
_objectWrapperHandler.Dispose();
143154
_valueConverterHandler.Dispose();
144155
_bindingContextHandler.Dispose();
145156
}
146157

147-
object IObjectProvider.GetCollectionItemTemplate<T>()
148-
{
149-
if (_collectionItemTemplates.TryGetValue(typeof(T), out var itemTemplate))
150-
{
151-
return itemTemplate;
152-
}
153-
154-
throw new NullReferenceException($"Item template for '{typeof(T)}' not found.");
155-
}
156-
157158
[MethodImpl(MethodImplOptions.AggressiveInlining)]
158159
private TProperty GetProperty<TProperty, TValueType>(IBindingContext context, BindingData bindingData)
159160
{

src/UnityMvvmToolkit.Core/Interfaces/IObjectProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ IReadOnlyProperty<TValueType> RentReadOnlyProperty<TValueType>(IBindingContext c
2525
IBaseCommand RentCommandWrapper(IBindingContext context, CommandBindingData bindingData);
2626
void ReturnCommandWrapper(IBaseCommand command, CommandBindingData bindingData);
2727

28-
internal object GetCollectionItemTemplate<T>();
28+
TValue GetCollectionItemTemplate<TKey, TValue>();
2929
}
3030
}

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/BindingContextObjectProvider.cs

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using UnityMvvmToolkit.Core.Enums;
77
using UnityMvvmToolkit.Core.Interfaces;
88
using UnityMvvmToolkit.Core.Internal;
9+
using UnityMvvmToolkit.Core.Internal.Extensions;
910
using UnityMvvmToolkit.Core.Internal.Interfaces;
1011
using UnityMvvmToolkit.Core.Internal.ObjectHandlers;
1112

@@ -26,7 +27,7 @@ public BindingContextObjectProvider(IValueConverter[] converters,
2627
_objectWrapperHandler = new ObjectWrapperHandler(_valueConverterHandler);
2728
_bindingContextHandler = new BindingContextHandler(new BindingContextMemberProvider());
2829

29-
_collectionItemTemplates = collectionItemTemplates;
30+
_collectionItemTemplates = collectionItemTemplates ?? ImmutableDictionary.Empty<Type, object>();
3031
}
3132

3233
public IObjectProvider WarmupAssemblyViewModels()
@@ -137,23 +138,23 @@ public void ReturnCommandWrapper(IBaseCommand command, CommandBindingData bindin
137138
}
138139
}
139140

141+
public TValue GetCollectionItemTemplate<TKey, TValue>()
142+
{
143+
if (_collectionItemTemplates.TryGetValue(typeof(TKey), out var itemTemplate))
144+
{
145+
return (TValue) itemTemplate;
146+
}
147+
148+
throw new NullReferenceException($"Item template for '{typeof(TKey)}' not found.");
149+
}
150+
140151
public void Dispose()
141152
{
142153
_objectWrapperHandler.Dispose();
143154
_valueConverterHandler.Dispose();
144155
_bindingContextHandler.Dispose();
145156
}
146157

147-
object IObjectProvider.GetCollectionItemTemplate<T>()
148-
{
149-
if (_collectionItemTemplates.TryGetValue(typeof(T), out var itemTemplate))
150-
{
151-
return itemTemplate;
152-
}
153-
154-
throw new NullReferenceException($"Item template for '{typeof(T)}' not found.");
155-
}
156-
157158
[MethodImpl(MethodImplOptions.AggressiveInlining)]
158159
private TProperty GetProperty<TProperty, TValueType>(IBindingContext context, BindingData bindingData)
159160
{

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/Interfaces/IObjectProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ IReadOnlyProperty<TValueType> RentReadOnlyProperty<TValueType>(IBindingContext c
2525
IBaseCommand RentCommandWrapper(IBindingContext context, CommandBindingData bindingData);
2626
void ReturnCommandWrapper(IBaseCommand command, CommandBindingData bindingData);
2727

28-
internal object GetCollectionItemTemplate<T>();
28+
TValue GetCollectionItemTemplate<TKey, TValue>();
2929
}
3030
}

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableListView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public abstract partial class BindableListView<TItemBindingContext> : ListView,
2222
public virtual void SetBindingContext(IBindingContext context, IObjectProvider objectProvider)
2323
{
2424
_itemsSourceBindingData ??= BindingItemsSourcePath.ToPropertyBindingData();
25-
_itemTemplate ??= (VisualTreeAsset) objectProvider.GetCollectionItemTemplate<TItemBindingContext>();
25+
_itemTemplate ??= objectProvider.GetCollectionItemTemplate<TItemBindingContext, VisualTreeAsset>();
2626

2727
_objectProvider = objectProvider;
2828

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/UITK/BindableUIElements/BindableScrollView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public virtual void Dispose()
4242
public virtual void SetBindingContext(IBindingContext context, IObjectProvider objectProvider)
4343
{
4444
_itemsSourceBindingData ??= BindingItemsSourcePath.ToPropertyBindingData();
45-
_itemTemplate ??= (VisualTreeAsset) objectProvider.GetCollectionItemTemplate<TItemBindingContext>();
45+
_itemTemplate ??= objectProvider.GetCollectionItemTemplate<TItemBindingContext, VisualTreeAsset>();
4646

4747
_objectProvider = objectProvider;
4848

0 commit comments

Comments
 (0)