• C# variadic templates?

    blowin
    @blowin Автор вопроса
    да, об этом мне известно. не хотелось бы использовать рефлексию.

    просто params не подходит, потому что я хотел бы видеть конкретные типы, которые нужно передать в метод. сейчас приведу пример, в чём заключается неудобство использовании перегрузок(даже не из-за copy paste):
    public interface ITest<T1, T2>
        {
            void NothingDo(T1 t1, T2 t2);
        }
        
        public class ConcretImpl : ITest<int, string>
        {
            public void NothingDo(int age, string name)
            {
                Console.WriteLine("Age: {0}, Name: {0}", age, name);
            }
        }
        
        public class HolderConcretImpl
        {
            public static void Do<IMPL, T1, T2>(T1 v1, T2 v2)
                where IMPL : ITest<T1, T2>, new()
            {
                    (new IMPL()).NothingDo(v1, v2);
            }
        }
        public class Program
        {
            public static void Main(string[] args)
            {
                HolderConcretImpl.Do<ConcretImpl, int, string>(22, "Jane");
                Console.Read();
            }
        }


    HolderConcretImpl.Do(22, "Jane"); Не удобно, что нужно повторно указывать необходимые типы, которые нужны ConcreteImpl, ведь он уже реализовал интерфейс.
  • Как исправить ошибку конвертации?

    blowin
    @blowin Автор вопроса
    Vitaly, обязательно посмотрю.
    пример написал искусственный, дабы не раздувать код. так же я использую не VS, а Qt Creator с gcc.
  • Как исправить ошибку конвертации?

    blowin
    @blowin Автор вопроса
    с наследованием всё в норме, просто он не может привести объект MySwither к AthleteForm