Troy Bryant Ответов: 2

Как создать экземпляр универсального класса


Привет -

Я узнаю больше о дженериках, и мне интересно, как создать экземпляр универсального типизированного класса. Вот этот класс

public class MyGenericCommand<T> : ICommand<T,T> where T : IMyBaseStuff<IBaseStuff>
{
 ///reset of class code here
}


В другом классе захотелось бы чего-нибудь вроде
private MyGenericCommand<some class> _command;


Спасибо

Что я уже пробовал:

C# Generic on variable declaration, возможно ли это? - переполнение стека[^]

2 Ответов

Рейтинг:
1

F-ES Sitecore

В этом нет особого смысла, но

public interface ICommand<T1, T2>
{
    T1 PropA { get; set; }
    T2 PropB { get; set; }
}

public interface IBaseStuff
{
    int PropD { get; set; }
}

public interface IMyBaseStuff<T>
{
    T PropC { get; set; }
}

public class MyGenericCommand<T> : ICommand<T, T> where T : IMyBaseStuff<IBaseStuff>
{
    public T PropA { get; set; }
    public T PropB { get; set; }
}

public class BaseStuff : IBaseStuff
{
    public int PropD {get;set;}
}

public class MyCommandClass : IMyBaseStuff<IBaseStuff>
{
    public IBaseStuff PropC {get; set;}
}


Использование

MyGenericCommand<MyCommandClass> _command = new MyGenericCommand<MyCommandClass>();
_command.PropA = new MyCommandClass();
_command.PropB = new MyCommandClass();

_command.PropA.PropC = new BaseStuff();
_command.PropA.PropC.PropD = 123;