Beste allemaal,
ik heb in C# een interface welke ik heb gekopieerd van het internet:
ClassName vm = this.DeepClone(); //resulteert in: Error CS0411 The type arguments for method //'ClassName.DeepClone<Name>()' cannot be inferred from the usage. Try specifying the type arguments explicitly.
ClassName vm = this.DeepClone<ClassName>(); //Dit werkt wel.
Mijn vraag is nu: Hoe roep ik dan, zonder foutmelding, de generieke functie aan die een object retourneert?
ik heb in C# een interface welke ik heb gekopieerd van het internet:
Deze wordt als volgt geimplementeerd:public interface IDeepCloneable
{
object DeepClone();
}
public interface IDeepCloneable<T> : IDeepCloneable where T : class
{
new T DeepClone();
}
tot dusver gaat alles goed. Maar als ik een object probeer te kopieren krijg ik een foutmelding:public class ClassName : IDeepCloneable
{
...
object IDeepCloneable.DeepClone()
{
return this.DeepClone<ClassName>();
}
public virtual ClassName DeepClone<Name>() where Name: ClassName, new()
{
Name new_vm = (Name)this.MemberwiseClone();
return new_vm;
}
}
ClassName vm = this.DeepClone(); //resulteert in: Error CS0411 The type arguments for method //'ClassName.DeepClone<Name>()' cannot be inferred from the usage. Try specifying the type arguments explicitly.
ClassName vm = this.DeepClone<ClassName>(); //Dit werkt wel.
Mijn vraag is nu: Hoe roep ik dan, zonder foutmelding, de generieke functie aan die een object retourneert?