Обобщенный (типизированный) интерфейс это
обычный интерфейс C#, который дополнительно использует обобщенный тип
T заключенный в угловые скобки
<T>.
interface
IUser<T>
{
T GetUserID();
// Т может быть любым типом
}
C#
Создаем новое C# консольное приложение... и напишем код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
// Обобщенный (типизированный) интерфейс в C#
interface IUser<T>
{
T GetUserID(); // Т может быть любым типом
}
// Обобщенный (типизированный) класс в C#
class User<T> : IUser<T>
{
// универсальныый член класса, потому что тип T
protected T UserID;
// конструктор
public User(T userID)
{
UserID = userID;
}
// метод с универсальным параметром T
public virtual T GetUserID()
{
return UserID;
}
}
class Program
{
static void Main(string[] args)
{
// Создаем объект обобщенного (типизированного) класса User<T> где T это int
IUser<int> user1 = new User<int>(20);
Console.WriteLine(user1.GetUserID());
// на экране увидим
// 20
// Создаем объект обобщенного (типизированного) класса User<T> где T это string
IUser<string> user2 = new User<string>("AA KI23");
Console.WriteLine(user2.GetUserID());
// на экране увидим
// AA KI23
}
}
}
C#
Создаем новое C# консольное приложение... и напишем код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
// Обобщенный (типизированный) интерфейс в C#
interface IUser<T1, T2>
{
T1 GetUserID(); // Т1 может быть любым типом
T2 Money { get; set; } // Т2 может быть любым типом
}
// Обобщенный (типизированный) класс в C#
class User<T1, T2> : IUser<T1, T2>
{
// универсальныый член класса, потому что тип T
protected T1 UserID;
// конструктор
public User(T1 userID)
{
UserID = userID;
}
// метод с универсальным параметром T1
public virtual T1 GetUserID()
{
return UserID;
}
// универсальное свойство
public T2 Money { set; get; }
}
class Program
{
static void Main(string[] args)
{
// Создаем объект обобщенного (типизированного) класса User<T> где T1 это int и T2 это string
IUser<int, string> user1 = new User<int, string>(20);
user1.Money = "50 dollars";
Console.WriteLine(user1.GetUserID());
Console.WriteLine(user1.Money);
// на экране увидим
// 20
// 50 dollars
// Создаем объект обобщенного (типизированного) класса User<T> где T это string
IUser<string, double> user2 = new User<string, double>("AA KI23");
user2.Money = 12.67;
Console.WriteLine(user2.GetUserID());
Console.WriteLine(user2.Money);
// на экране увидим
// AA KI23
// 12.67
}
}
}