101 Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu @OP-X'$k& -X'-9B-X'*+ -q::r9:'^?G: @OP1''K)c4 !‹")$$k& 1''\9 *1'+)L&'^H)B'* :'^?G:D:1':D'D_D DBmqr-.DDD+ <$k"S"fO !>BHX\& &,'-*:>BHX\;:+ ='*''\&n-*++ &,'-*:k:E+ . >Q?'"$& &()-*+ . . 8. 8. Truy n d li u gi a các mi n ng d ngề ữ ệ ữ ề ứ ụ Truy n d li u gi a các mi n ng d ngề ữ ệ ữ ề ứ ụ #eAJwAOIQJ[J>jL[AB@RALtQHZ]GAh?Y@qZQHeABQ>S@>c]JPZ>lA>B@?cJSJ O@GA~ABhUAB( rABJSJd>V[ABQ>~J SetData D\ GetData JbcYEd AppDomain ( UKF$'9.:)DD'i&*0 >D$F.:)u')K9 .:)$=)r)D')Ke..: ) "0.:))'%.-É–˜‘.)Kgdata cacheh:.6! +>,i-nNI)-É–˜‘.)KI6%. :)8iQD$ HX $9%* .:)g;(..^ZhËÉ–˜‘¯.)K'F$O)s)K K.:)'Ki*. )ee..:) RM: X =I$.F)*#.D$ KFe.)K.:)RM: nX =4 $*'*D$Qe.)K49FHI.S. 102 Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu .:)0M: X ' nX ';-É–˜‘.)K. :)8%D$)K#$Kqmarshal-by-value'marshal-by- reference8I4%* &(&'[&'[?G @&iX.g;(..^^&I>.I'D$9.: )hl*.S%&'O)M: X nX '. &&H''- K.:) &(= & -1)=' -1)='*+ >8)$%"0)I0& H''-9 *H''-+HX&''X&nX*::+ @"“)$& &H))*:@:+ . . X?G )1*+ @OPK)c4& HX)9HX&'X*:@:+ @OPH''- !6/ !& H''-9BH''-*+ &H))*::+ &H))*::+ &H))*:>:+ gi)$ ! 2"0)I0TK)c4& )&X*::D+ 103 Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu @OP-1)=''K)c4 ‘"“P)T' 2"0)I0& )&'^*:_Zk_]:D:-1)=':+ >8O)$ !P)Tƒ& ='*'*H''-+)&nX*::++ &,'-*+ . >Q?'"$& &()-*+ . . 9. 9. Gi i phóng assembly và mi n ng d ngả ề ứ ụ Gi i phóng assembly và mi n ng d ngả ề ứ ụ #eAJwAB@R@d>^ABJSJcff†OFY]>c]JSJO@GA~ABhUABY•JQ>nJQ>@( 3>TABJ^JSJ>A\XLtB@R@d>^ABJSJcff†OFY]H@CABY’(#eAJ^Q>tB@R@d>^AB QX\AFIOIQO@GA~ABhUABF`ABd>V[ABQ>~JQ„A> AppDomain.Unload L€ABQ>o@ DE@D@qJB@R@d>^ABO@GA~ABhUABY\QPQJRJSJcff†OFY]L}LVWJAedD\XO@GA ~ABhUABL^J“ABLVWJB@R@d>^AB( P)'F.(.&'F.:).FS$ *lI8F..:)?@F4 (.&'S$*Fl<'.*'>N&*s:9BD G.:)(.&' wF..:)&5M:q HX&) 8&*N' F..I HX I.:)NFL*4 F.:).!i)CLR*Gl*.S)<'%&'O )M: ) @OPK)c4& HXBX9HX&'X*:>BX:+ >O !K)c!& • neƒK)c& HX&)*BX+ RM: ) !%..:)$Ji0 M: @')&H' >%*'.:)' HI%0M: ) *'.:)NF% .%@$C*'=9%FHIF 104 Chng 3: Min ng dng, c ch phn chiu, v siờu d liu F.:)8* &)HX?G @&iX. &C%=9%F 7.:)$F8CLR0=M:F D$.:)7e'D$D$& M:F.9%'F F RM: HX&^A[A') ' I.:)$ FCLRS&/NFD$FT$*8 = 10. 10. Truy xu t thụng tin Type Truy xu t thụng tin Type #eAOZKAQ>ZYP]LK@QVWAB System.Type OTQROIQs@tZh?Y@qZA>PQLMA>( ghUABOIQQHXABJSJJSJ>fcZz XSAQg typeof >V[ABQ>~JQA> GetType JbcYEd System.Type >V[ABQ>~J GetType Q>ZIJOIQQ>t>@qAJbcs@tZ >V[ABQ>~J GetNestedType >c] GetNestedTypes JbcYEd Type >V[ABQ>~J GetType >c] GetTypes JbcYEd Assembly >V[ABQ>~J GetType GetTypes >c] FindTypes Jbc YEd System.Reflection. Module lD$ @ CN.)K&5MI I"D$ @ X&*.>)K8' >8*D$UN.90F8NETFramework MI'.IID$ @ RM9'D$ @ .O)O = \ &@L9=*&@G&'F)'+ 7>4$!)'XƠàạƠàƠèàầ-đ%&>)iu% .I$<G&>)i>(.&':'CN qê(.&'@$>ƠâƠĐ(.&'.f(&* "O)M:q @&n@ 86.#:> u%O)#Ji>&*F'sFG=8Ê Ô.C OII6%&5MIIg;( ^Z]hHI&*Ji >8&=%.'.(.&'S$*L*?FJ i.> ƠơãÊƠÊêơăÔ g.NET Framework SDK M: @&n@ &II>ƠơãÊƠÊêơăÔhP %&'O)M: n@ \ 0IkD'e KJC/RQ& @\9@&n@*:&':+ 105 Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu ƒ†0IkD •O0@-)?GJC/RQ& @Z9@&n@*:&':D'+ w/†0IkD •O0@-)?GJC/RQ& @~9@&n@*:&':D'D'+ @6C”•–—˜”™š›˜œ•›•ž˜Ÿ –¡¢£¤& @`9@&n@*:&X&XD&XD:E :}'9L&_&`___&_D'9'D w@C9••``YLaZ~_]a:+ l'D$ @ .4.D$F8S'O)M: n@ 8$=&C pm $QI&C)KU<' .2)\ &@G&'F)'9B&@G&'F)'*+ @Y9&n@*+ L^]F./M:?v';D$ @ Bảng 3.2 Các phương thức trả về đối tượng Type Phương thức Mô tả @&n>)@ y'D$ @ .4.t&>D$ @ F @&n>)@ y'..D$ @ .4t&> D$ @ F H&n@ y'D$ @ .4.$&&> (.&' H&n@ y'..D$ @ .4$& &>(.&' 1)&n@ y'D$ @ .4.$&&> .)( 1)&n@ y'..D$ @ .4$& &>.)( 1)&A)@ y'..S$08:D$ @ .4 $&&>.)(E'$0 &5.delegateg;i;(..# @ F; .2'4h 106 Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu 11. 11. Ki m tra ki u c a m t đ i t ngể ể ủ ộ ố ượ Ki m tra ki u c a m t đ i t ngể ể ủ ộ ố ượ #eAOZKAs@tOQHcs@tZJbcOIQLK@QVWAB( ghUABd>V[ABQ>~JQ>ƒcsj Object.GetType LtQ>ZYP] Type J>XLK@QVWABA\]( HXABD\@QHVoAB>WdFeAJ“ABJ^Q>tfghUABQXSAQg is D\ as Lts@tOQHcs@tZ JbcOIQLK@QVWAB( 7)KQIM: n@ QMC pm HS$ 6.^Zd8M:'..I @ .4D $L=)'%.D$ @ .#$*.I 'eJID$'l'q&*F.I .9u2))<'%&'..D$F &^p&'()' '4\ @OP'()'"30& pmpm9 B'()'*:@'()':+ w'Gpmƒe!P'()'C/ ’$Q !$J@*3)c$3=+& =*=*&^p&'()'+99pm&n@*++ -!R"ƒ& • . C#O =.>H8 @ ' ID$N.)3;Q$Jil*.S)<'.;(. pm . &^p&@G()' 8'.)3;Q @G()' g '()' h\ w'Gpm!@G()'D )¥GQ%@G()'’$3& =*pm&^p&@G()'+ -!R"ƒ& • . P'kV)eO = S&I <G&>)i"*Mg6.MhO)M : @&n@ ..I @ $Ji7.I @ 4$<I=8'CIv8 X&*'sXG=)=>i.#RM: ^@ )<'@ ' ID$$JiO)M 107 Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu : @&^p= .D$'F.$J i'4 ^@*mmD'+ @9@&n@*D'D'+ ''99m&n@*+{{m&n@*+&^p=*+ . PDe8&*FO)O X&…D$$Ji HID$4&iX$Ji8O @ l' X&*=XXgsafecasth8$ <G=U<'.2)\ 3)c$3"N0P••C!& '()'')'9pm&^p&'()' =*')'y9+ -!R"ƒ& • . >V[ABQ>~JQ„A> GetUnderlyingType JbcYEd System.Enum J>Xd>•dFeAQ>ZYP] s@tZ¦¤§£•¨§•JbcOIQs@tZY@qQsC( 12. 12. T o m t đ i t ng b ng c ch ph n chi uạ ộ ố ượ ằ ơ ế ả ế T o m t đ i t ng b ng c ch ph n chi uạ ộ ố ượ ằ ơ ế ả ế #eAJwAQeXOIQLK@QVWABF`ABJ[J>jd>RAJ>@jZ( >ZYP]LK@QVWAB Type OTQRs@tZJbcLK@QVWABJwAQeXB•@d>V[ABQ>~J GetConstructor JbcA^LtJ^LVWJLK@QVWAB System.Reflection.ConstructorInfo OT QR d>V[AB Q>~J s>‰@ hnAB JwA hrAB fcZ L^ Q>nJ Q>@ d>V[AB Q>~J ConstructorInfo.Invoke ( LN>*.D$&5MII'D$ @ .4D$N*g;(..^Zd&I>.IhwF$D$ @ 8S'0M: n'' 'D$ ''^= .4. M:C)='U*:4)M: n'' 6.. @ .DD8D$ ''^= .4 M:C)=6DD$Ji. @ l'D $ ''^= .4M:C)=.!ig4FDDh8&*S' ' M : n'' . . @ # gO ) q @&?@ hT Q O ) 8 I 4 n'' @ X. * &H'>?G HI n'' 4%.'M:C)= FKBe$DD$Ji%F@ 108 Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu "4SFD$ ''^= ..D8S'0M: ^ C FL*..:DD.&*.D'M:C )=RM: ^ C @*D$...IID$F g&*Xe$hU<'*.S%&'*.D$ &@G&'F)' 8Ji)&N 'F)' :: F @Q"Vf@4'F)'& @9=*&@G&'F)'+ @O@qr$"Vf@x"VV TCM)N*Px !PV6+& @qr'@9B@qr=*&'+D =*&^Z\+. @Q"Vf''^=& ''^=^=9&n''*'@+ @Omqr$"VVCM)N& mqr'}9Bmqr:':DZ_. @O"Vf !•ƒ KC'F)'& 'F)'9*'F)'+^=&^ C*'}+ P:vI $O)=factory7F8&*O) MIIFQI.MCs&I'=. )s&I74 8MC)$O) yMCQ$@=)&…:v8F.# =’š‘›¥³@QIMC w4FMI&5.#’š‘›¥³=M:C )=KBHI.D gS:&h=’š‘›¥³% &*J}g)3hKBM:C)=.factory &*0P4 'O)M:C)=.!i g4FDDh8F%D$&5M:2u2))<' @=.factory)e*D$F=) ^ &(= n)0!Qe$ke0N& '=^ 'X'. 109 Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu )'*+ )*+ . -4M'%f!Qe$ke)¥GQ%"†& 'H';^ x/ek& ' ')'9:: @PW)2"Q/ek& 'X' '')'. )'9 . . w$$! 6T)0^& ' )'*+ ' )*+ . 1P0N"e)0^ "#4A'& ;H' <0N'& '') )'*+ &,'-*X'E:;'&&&:+ . <0N& '') )*+ &,'-*X'E:;&&&:+ . . A')2"O$"VfT^& )A' ^'*'D 110 Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu '>D')'+ @Q"Vf@k"f‹"& @9@&n@*>E:D:E+ @Q"Vf''^=& ''^=^=9&n''*@&?@+ @O"Vf !•ƒ KC'F)'& ^9*^+^=&^ C*+ QR^4& &X'9)' '' . . P<<'@*D$ &5 A' \ ^9A'&'* :'pm?G:D@6 ::D@64k :H:-/ek + Ed System.Activator JZAB JPd >c@ d>V[AB Q>~J Q„A> CreateInstance D\ CreateInstanceFrom hrABLtQeXJSJLK@QVWABhncQHCALK@QVWAB Type >c]J>Zx@ J>~cQCAs@tZ(%†OQ\@Y@qZ( NET Framework SDK LtF@jQQ>COJ>@Q@jQ( 13. 13. T o m t đ c tính tùy bi nạ ộ ặ ế T o m t đ c tính tùy bi nạ ộ ặ ế #eAJwAQeXHcOIQL_JQaA>Q>†XŠFeA( eXOIQYEdhpAvZPQQƒYEdJ[f‰QHƒZQVWAB System.Attribute (@qAQ>nJJSJ d>V[ABQ>~Js>‰@hnABJSJQHVoABD\JSJQ>ZIJQaA>LtJ>Xd>•dABVo@hrAB JPZ>lA>L_JQaA>(ghUAB System.AttributeUsageAttribute LtLMA>AB>„cz • >?ABd>wAQgJ>V[ABQHlA>A\XY\LaJ>JbcL_JQaA> • #eAJ^Q>tSdhUABA>@GZQ>t>@qAJbcL_JQaA>J>XOIQd>wAQgJ>V[AB QHlA>>c]s>TAB . !>BHX& &,'-*:>BHX;:+ ='*''&n-*++ &,'-*:k:E+ . >Q?'"$& &()-*+ . . 8. 8. Truy n d li u gi a các mi n ng d ngề ữ ệ ữ ề ứ ụ Truy n d li u gi a các mi n ng d ngề ữ ệ ữ ề ứ ụ #eAJwAOIQJ[J>jL[AB@RALtQHZ]GAh?Y@qZQHeABQ>S@>c]JPZ>lA>B@?cJSJ O@GA~ABhUAB( rABJSJd>V[ABQ>~J SetData D GetData JbcYEd AppDomain ( UKF$'9.:)DD'i&*0 >D$F.:)u')K9 .:)$=)r)D')Ke..: ) "0.:))'%.-É–˜‘.)Kgdata. –¡¢£¤& @`9@&n@*:&X&XD&XD:E :}'9L&_&`___&_D'9'D w@C9••``YLaZ~_]a:+ l'D$ @ .4.D$F8S'O)M: n@ 8$=&C pm $QI&C)KU<' .2) &@G&'F)'9B&@G&'F)'*+ @Y9&n@*+ L^]F./M:?v';D$ @ Bảng 3.2 Các phương thức trả về đối tượng Type Phương thức Mô tả @&n>)@ y'D$ @