c# - Passing Run time object types in side List<T> -


object obj = new customer(); type ty = obj.gettype(); validator<ty> cusvalidator = valfactory.createvalidator<ty>(); 

getting error here

is possible?

yes is. not compile-time type checking. runtime type ty not valid compile-time type argument. can done reflection, using makegenerictype method without safety of compile time check:

object obj = new customer(); type ty = obj.gettype(); methodinfo validatorfactory = valfactory.gettype()                                .getmethod("createvalidator")                                .makegenerictype(ty); var cusvalidator = validatorfactory.invoke(valfactory, null); 

but cannot type validator<ty> -- have use var or dynamic. aware type object:

// true: cusvalidator.gettype() == typeof(object) 

you may introduce non-generic validator interface allow invocation of methods on cusvalidator insert base class of customer (and on) classes validate it. can't cast validator<ty>.


Comments

Popular posts from this blog

monitor web browser programmatically in Android? -

Shrink a YouTube video to responsive width -

wpf - PdfWriter.GetInstance throws System.NullReferenceException -