using System;

namespace Stary.Evo
{
    public interface ICanSendEvent:IBelongToArchitecture
    {
        
    }
    public static class CanSendEventExtension
    {
        public static void SendEvent<T>(this ICanSendEvent self,T key) where T : IConvertible
        {
            
            self.GetArchitecture().SendEvent(key);
        }
        public static void SendEvent<T,T1>(this ICanSendEvent self,T key,T1 value) where T : IConvertible
        {
            
            self.GetArchitecture().SendEvent(key,value);
        }
        public static void SendEvent<T,T1,T2>(this ICanSendEvent self,T key,T1 value1,T2 value2) where T : IConvertible
        {
            
            self.GetArchitecture().SendEvent(key,value1,value2);
        }
  
        public static void SendEvent<T,T1,T2,T3>(this ICanSendEvent self,T key,T1 value1,T2 value2,T3 value3) where T : IConvertible
        {
            
            self.GetArchitecture().SendEvent(key,value1,value2, value3);
        }
        public static void SendEvent<T>(this ICanSendEvent self,T key,object[] values) where T : IConvertible
        {
            
            self.GetArchitecture().SendEvent(key,values);
        }
    }
    
}