Merge remote-tracking branch 'origin/Untrusted' into Untrusted
This commit is contained in:
@@ -213,9 +213,7 @@ namespace mROA.Cbor
|
||||
|
||||
if (obj is IShared)
|
||||
{
|
||||
var interfaces = obj.GetType().GetInterfaces();
|
||||
var generic = interfaces.FirstOrDefault(i => typeof(IShared).IsAssignableFrom(i));
|
||||
var sharedShell = typeof(SharedObjectShellShell<>).MakeGenericType(generic);
|
||||
var sharedShell = typeof(SharedObjectShellShell<object>);
|
||||
var so =
|
||||
Activator.CreateInstance(sharedShell, obj, context) as
|
||||
ISharedObjectShell;
|
||||
|
||||
@@ -1,8 +1,20 @@
|
||||
namespace mROA.Abstract
|
||||
{
|
||||
public interface IEventBinder<T>
|
||||
public interface IEventBinder<T> : IEventBinder
|
||||
{
|
||||
public void BindEvents(T source, IEndPointContext context,
|
||||
IRepresentationModuleProducer representationModuleProducer, int index);
|
||||
|
||||
void IEventBinder.BindEvents(object source, IEndPointContext context, IRepresentationModuleProducer representationModuleProducer,
|
||||
int index)
|
||||
{
|
||||
BindEvents((T)source, context, representationModuleProducer, index);
|
||||
}
|
||||
}
|
||||
|
||||
public interface IEventBinder
|
||||
{
|
||||
public void BindEvents(object source, IEndPointContext context,
|
||||
IRepresentationModuleProducer representationModuleProducer, int index);
|
||||
}
|
||||
}
|
||||
@@ -32,9 +32,15 @@ namespace mROA.Implementation.Backend
|
||||
public int ResisterObject<T>(object o, IEndPointContext context)
|
||||
{
|
||||
var last = _storage.Place(o);
|
||||
|
||||
var sharedType = typeof(IShared);
|
||||
var interfaces = o.GetType().GetInterfaces();
|
||||
var generic = interfaces.Where(i => sharedType.IsAssignableFrom(i) && i != sharedType)
|
||||
.Select(i => typeof(IEventBinder<>).MakeGenericType(i));
|
||||
|
||||
var binder = EventBinders.OfType<IEventBinder<T>>().FirstOrDefault();
|
||||
binder?.BindEvents((T)o, context, _representationModuleProducer!, last);
|
||||
var binders = EventBinders.Where(i => generic.Any(g => g.IsAssignableFrom(i.GetType())));
|
||||
foreach (var binder in binders)
|
||||
((IEventBinder)binder).BindEvents(o, context, _representationModuleProducer!, last);
|
||||
|
||||
return last;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user