Общий бесплатный шаблон

Привет, ниже вы можете найти C# 2.0 Пример универсального свободного шаблона, который я только что придумал ;). Вызывается только общий код, но он вызывается без общего типа. У меня есть идея получше реализовать этот шаблон, но необходимо ввести третье использование нашего ключевого слова в C#., и я не могу это сделать. Однако, я мог бы сделать этот узор, и я надеюсь, что тебе это понравится. Теперь вы можете написать универсальный код, который будет использоваться так, как будто универсальный код не нужен., так что это похоже на JavaScript в C #, когда вы его используете, и на строгие типизированные обобщения, когда вы его пишете. ;).

namespace GenericFreePattern
{
    using System;
    // Framework Code
    internal class Comparer<T> : Comparer where T : IComparable, IComparable<T>
    {
        public Comparer(T x1, T x2)
        {
            this.x1 = x1;
            this.x2 = x2;
        }
        private readonly T x1;
        private readonly T x2;
        public override int Compare()
        {
            return x1.CompareTo(x2);
        }
    }
    public class Comparer
    {
        internal Comparer() {}
        private readonly Comparer instance;
        public Comparer(IComparable x1, IComparable x2) {
            if (x1.GetType() != x2.GetType())
                throw new InvalidOperationException(
                    "Arguments have different types!");
            instance = (Comparer)Activator.CreateInstance(
                typeof(Comparer<>)
                .MakeGenericType(x1.GetType()),
                new object[]{x1, x2});
        }
        public virtual int Compare()
        {
            return instance.Compare();
        }
    }
    // Client Code
    class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine(
                "new Comparer(3,5).Compare() = {0}",
                new Comparer(3,5).Compare());
            Console.Write("Press any key to continue...");
            Console.ReadKey(true);
        }
    }
}

п ;).

Один ответ на «Общий бесплатный шаблон”

  1. Пингбэк: Третье использование ключевого слова C# out с кодированием Roslyn Intro @ для дизайна.

оставьте ответ

Ваш электронный адрес не будет опубликован. Обязательные поля помечены *

*

Этот сайт использует Akismet для уменьшения спама.. Узнайте, как обрабатываются данные ваших комментариев.