How to make it work?
1. What you can do to make it work is to pass it on T.
BaseHamster hamster = null;
var derived = new DerivedHamster();
T i = derived as T;
var s = new TakeDamageHamster<T>(i);
class.
class ApplyHitHamster<T> where T : class, IHamster
{
}
2. , . .
class TakeDamageHamster<T> where T : IHamster
{
public TakeDamageHamster(IHamster Hamster)
{
Console.WriteLine(Hamster.Some);
}
}
3. new T(). , new().
BaseHamster hamster = null;
var derived = new T();
var s = new TakeDamageHamster<T>(derived);
var s2 = new TakeDamageHamster<IHamster>(derived);
?
, i T. , AnotherHamster. , BaseHamster, DerivedHamster.
public class DerivedHamster : BaseHamster
{
}
public class AnotherHamster : BaseHamster
{
}
ApplyHitHamster.
var fooHamster = new ApplyHitHamster<AnotherHamster>();
fooHamster.Zu();
, TakeDamageHamster<AnotherHamster>. , DerivedHamster .
BaseHamster hamster = null;
var derived = new DerivedHamster();
IHamster i = derived;
var s = new TakeDamageHamster<T>(i);
, i DerivedHamster, TakeDamageHamster<AnotherHamster> a AnotherHamster. .
. , :
var fooHamster = new ApplyHitHamster<BaseHamster>();
fooHamster.Zu();
T BaseHamster. :
var derived = new DerivedHamster();
IHamster i = derived;
var s = new TakeDamageHamster<BaseHamster>(i);
, TakeDamageHamster BaseHamster ( -, ) . IHamster. , BaseHamster IHamster. IHamster BaseHamster.
IHamster, BaseHamster. , IHamster, ? , , constaint .