Change your interface to a universal interface instead of the method in it
As below
public interface ITransformer<in TInput, out TOutput> { TOutput Transform(TInput input); } public interface ITransform<TInput, TOutput> { TOutput Transform(ITransformer<TInput, TOutput> transformer); } public class MessageLogs<T> : ITransform<MessageLogs<T>,T> { public T Transform(ITransformer<MessageLogs<T>, T> transformer) { return transformer.Transform(this); } }
Updated Code Let's say you do not want MessageLog to know what it is turning to. then follow below.
public class Transformer<T1,T2> : ITransform<T1,T2> { public T2 Transform(T1 logger,ITransformer<T1, T2> transformer) { return transformer.Transform(logger); } } public class MessageLogs {
Viru source share