c# - Incorrect number of type parameters in reference class MyClass<F,T> - Generic entity framework -
i've got following generic abstract class:
public abstract class myclass<f, t> tcurrencyfrom : book tcurrencyto : book { public int id { get; set; } public virtual f first{ get; set; } public virtual t second { get; set; } }
and got 3 classes implement class like:
public class implementation1 : myclass<booktype1, booktype2> { } public class implementation2 : myclass<booktype2, booktype1> { }
now got "entitytypeconfiguration" looks like:
public class myclassconfiguration<tmyclass> : entitytypeconfiguration<tmyclass> tmyclass: myclass { public myclassconfiguration() { ... } }
and try use like:
public class implementation1map : myclassconfiguration<implementation1> { public implementation1map () { ... } }
but following error:
incorrect number of type parameters in reference class myclass
how can solve problem , make sure have generic approach on entitytypeconfigurations?
unfortunately tricky .net generics.
if myclassconfiguration
doesn't care type arguments, might want create non-generic interface:
public interface imyclass { // members of myclass<,> don't rely on type arguments, // e.g. id property }
then make myclass<,>
implement imyclass
:
// type parameters renamed make type constraints sensible... public abstract class myclass<tcurrencyfrom, tcurrencyto> : imyclass tcurrencyfrom : book tcurrencyto : book
and change type constraint myclassconfiguration
:
public class myclassconfiguration<tmyclass> : entitytypeconfiguration<tmyclass> tmyclass: imyclass
(obviously you'll want give imyclass
more useful name...)
alternatively, make myclassconfiguration
generic in 3 type parameters:
public class myclassconfiguration<tmyclass, tcurrencyfrom, tcurrencyto> : entitytypeconfiguration<tmyclass> tmyclass: myclass<tcurrencyfrom, tcurrencyto> tcurrencyfrom : book tcurrencyto : book public class implementation1map : myclassconfiguration<implementation1, booktype1, booktype2> public class implementation2map : myclassconfiguration<implementation2, booktype2, booktype1>
it's ugly, it'll work.
Comments
Post a Comment