public static void Main(string[] args)
IStigmatorPredictor abcd = new StigmatorPredictorEx();
var castedPredictor = (IMicroscopePredictor<IMicroscopePredictorResult, IMicroscopePredictorRequest, IMicroscopePredictorHistoryRecord>)(StigmatorPredictor)abcd;
public class StigmatorPredictorEx : StigmatorPredictor{}
public abstract class MicroscopePredictor<TResult, TRequest, THistoryRecord> : IMicroscopePredictor<TResult, TRequest, THistoryRecord>
where TResult : IMicroscopePredictorResult
where TRequest : IMicroscopePredictorRequest
where THistoryRecord : IMicroscopePredictorHistoryRecord
public class StigmatorPredictor : MicroscopePredictor<StigmatorPredictorResult, StigmatorPredictorRequest, StigmatorPredictorSample>,
public interface IStigmatorPredictor : IMicroscopePredictor<StigmatorPredictorResult, StigmatorPredictorRequest, StigmatorPredictorSample>
public class StigmatorPredictorResult : IMicroscopePredictorResult
public class StigmatorPredictorRequest : IMicroscopePredictorRequest
public class StigmatorPredictorSample : IMicroscopePredictorHistoryRecord{}
public interface IMicroscopePredictor<TResult, in TRequest, in THistoryRecord>
public interface IMicroscopePredictorHistoryRecord
public interface IMicroscopePredictorRequest
public interface IMicroscopePredictorResult