interface instead of mapping one by one
hi all, im trying to use an interface to initialize common properties, for example INote that contains all common properties, and multiple classes will inherit from this INote, im trying to achieve something like : initialize once and can be used for all objects that inherit this INote interface
previously i was doing one by one mapping for each objects that have common properties and found out there are lots of duplication (some resource say better to do manual mapping that use a library like automapper)
so i try to do it using interface, but somehow even if a class inherit this INote i still can't do it like this :
Memo resource = QueryVariant(new NoteItem(), "memo");
LongNote longNote = QueryVariant(new NoteItem(), "longNote");
did i miss anything here?
6 Replies
I'm not sure why you're using an interface for this instead of inheritance
(some resource say better to do manual mapping that use a library like automapper)doesn't necessarily mean they're right!
Memo resource = QueryVariant(new NoteItem(), "memo"); //doesnt workthis doesn't work because your QueryVariant method only takes one parameter. it doesn't take a
string
parameter that you're trying to pass inI see.. so it's okay if i use automapper, is that right? (Actually I'm not sure of a best practice for this problem, hope you could give an advice as well ..)
I was trying to map an object one by one previously (object with common properties, so there are redudancy everywhere..)
Sry i mistyped the code, it should accept 2 parameters (edited the message), but i mean.. I can't seem to convert it that way
Automapper is a useful tool for this kind of situation
when people warn against automapper it's usually because people try to use it for important business logic
Memo resource = QueryVariant(new NoteItem(), "memo"); //doesnt work
QueryVariant returns an INote
all Memo
s are INote
s, but not all INote
s are Memo
s
you are trying to assign an INote
(less specific) to a Memo
(more specific)
assigning a Memo
(more specific) to an INote
(less specific) would workI see.. okay understand.. I'll revert my changes to use inheritance instead of interface and use automapper for the current problem
I see, no wonder it wont works.., i think there would be lot's of work on using interface for this issue
Okay.. thank you for your explanation, noted it down.. š
no prob
š
š