using System; namespace ET { public interface IInvoke { Type Type { get; } } public abstract class AInvokeHandler: IInvoke where A: struct { public Type Type { get { return typeof (A); } } public abstract void Handle(A a); } public abstract class AInvokeHandler: IInvoke where A: struct { public Type Type { get { return typeof (A); } } public abstract T Handle(A a); } }