Ёсць сумяшчальны інтэрфейс без атрымання ў спадчыну

Я планую рэалізаваць log4net пазней у маім дадатку, але ў цяперашні час не ўяўляецца магчымым. Там будзе мяккі пераход на новыя тэхналогіі, але гэта патрабуе часу. Таму я павінен выкарыстоўваць уласны механізм рэгістрацыі.

Але калі я рэалізую новыя асаблівасці, якія я хацеў бы, каб быць гатовымі да пазнейшых міграцыям. Таму я хацеў бы мець уласны клас, які рэалізуе інтэрфейс Илога так што я магу потым пераключыцца на log4net без змен новых функцый. Гэты клас будзе ў цяперашні час карты запатэнтаваны механізм часопіса, а затым быць састарэлымі.

Маё пытанне: Як я не зборкі log4net ў маім праекце ў мяне пакуль не інтэрфейс Илог. Калі я ствараю свой уласны інтэрфейс Илог, які будзе мець сапраўды такія ж метады і подпісы, было б сумяшчальна, калі я абмяняць яго пазней?

1
Гэта веданне неабходна да ноў. Не блытайце людзей з рэчамі, яны не могуць зразумець.
дададзена аўтар Hans Passant, крыніца
Гэта веданне неабходна да ноў. Не блытайце людзей з рэчамі, яны не могуць зразумець.
дададзена аўтар Hans Passant, крыніца
Гэта веданне неабходна да ноў. Не блытайце людзей з рэчамі, яны не могуць зразумець.
дададзена аўтар Hans Passant, крыніца
Так, гэта той факт, як я ўжо ведаю, што мы будзем пераходзіць на log4net прыкладна 6 месяцаў, і гэта адкрытая бібліятэка крыніцы. Такім чынам, я мяркую, што гэта робіць адказ;)
дададзена аўтар ZoolWay, крыніца
Так, гэта той факт, як я ўжо ведаю, што мы будзем пераходзіць на log4net прыкладна 6 месяцаў, і гэта адкрытая бібліятэка крыніцы. Такім чынам, я мяркую, што гэта робіць адказ;)
дададзена аўтар ZoolWay, крыніца
Вы маеце на ўвазе фізічна не маеце інтэрфейсу, але вы ведаеце, што яго змест? У гэтым выпадку, я амаль упэўнены, што ваш код будзе сумесьцяць з «рэальным» інтэрфейсам, калі вы кладзе яго, так як вы на самой справе будзеце працаваць з дакладнай копіяй.
дададзена аўтар Daniel Daranas, крыніца
Шкада, што я адправіў яго ў якасці каментара, і я не атрымліваю рэсп ад яго :)
дададзена аўтар Daniel Daranas, крыніца
Шкада, што я адправіў яго ў якасці каментара, і я не атрымліваю рэсп ад яго :)
дададзена аўтар Daniel Daranas, крыніца
@HansPassant Калі гэта «плануецца», каб выкарыстоўваць яго, але да гэтага часу не выкарыстоўваецца, можа быць, кіраўніцтва мае некаторыя праблемы з гэтым.
дададзена аўтар Daniel Daranas, крыніца
@HansPassant Калі гэта «плануецца», каб выкарыстоўваць яго, але да гэтага часу не выкарыстоўваецца, можа быць, кіраўніцтва мае некаторыя праблемы з гэтым.
дададзена аўтар Daniel Daranas, крыніца

9 адказы

Ён не будзе сумяшчальны. Але гэта будзе трывіяльным стварыць тонкую абалонку для log4net рэалізацыі вашага Илога інтэрфейсу.

2
дададзена
Чаму вы прыйшлі да такой высновы ў дачыненні да ўсіх іншых заўваг і адказаў?
дададзена аўтар ZoolWay, крыніца
Паколькі .NET не падтрымлівае качку друкаваць. Калі вы вызначылі свой уласны інтэрфейс з такім жа імем і членаў, аб'екты, якія рэалізуюць падобны інтэрфейс ад іншай зборкі не можа быць прыведзены да інтэрфейсу. Калі ваш інтэрфейс будзе мець той жа прастора імёнаў таксама кампілятар будзе скардзіцца неадназначным выклікам. Такім чынам, вы будзеце вымушаныя выдаліць версію інтэрфейсу. Таму што гэта несумяшчальна.
дададзена аўтар OpenMinded, крыніца

Ён не будзе сумяшчальны. Але гэта будзе трывіяльным стварыць тонкую абалонку для log4net рэалізацыі вашага Илога інтэрфейсу.

2
дададзена
Чаму вы прыйшлі да такой высновы ў дачыненні да ўсіх іншых заўваг і адказаў?
дададзена аўтар ZoolWay, крыніца
Паколькі .NET не падтрымлівае качку друкаваць. Калі вы вызначылі свой уласны інтэрфейс з такім жа імем і членаў, аб'екты, якія рэалізуюць падобны інтэрфейс ад іншай зборкі не можа быць прыведзены да інтэрфейсу. Калі ваш інтэрфейс будзе мець той жа прастора імёнаў таксама кампілятар будзе скардзіцца неадназначным выклікам. Такім чынам, вы будзеце вымушаныя выдаліць версію інтэрфейсу. Таму што гэта несумяшчальна.
дададзена аўтар OpenMinded, крыніца

Ён не будзе сумяшчальны. Але гэта будзе трывіяльным стварыць тонкую абалонку для log4net рэалізацыі вашага Илога інтэрфейсу.

2
дададзена
Чаму вы прыйшлі да такой высновы ў дачыненні да ўсіх іншых заўваг і адказаў?
дададзена аўтар ZoolWay, крыніца
Паколькі .NET не падтрымлівае качку друкаваць. Калі вы вызначылі свой уласны інтэрфейс з такім жа імем і членаў, аб'екты, якія рэалізуюць падобны інтэрфейс ад іншай зборкі не можа быць прыведзены да інтэрфейсу. Калі ваш інтэрфейс будзе мець той жа прастора імёнаў таксама кампілятар будзе скардзіцца неадназначным выклікам. Такім чынам, вы будзеце вымушаныя выдаліць версію інтэрфейсу. Таму што гэта несумяшчальна.
дададзена аўтар OpenMinded, крыніца

Я хацеў бы вызначыць свой уласны інтэрфейс рэгістратара, падобную log4net, але, магчыма, трохі больш спэцыялізаваўся. Тады я б рэалізаваць інтэрфейс як патэнтаванай рэгістратар. Калі прыходзіць час, каб перайсці да log4net я хацеў бы напісаць новую рэалізацыю - з log4net абгортку.

1
дададзена

Я хацеў бы вызначыць свой уласны інтэрфейс рэгістратара, падобную log4net, але, магчыма, трохі больш спэцыялізаваўся. Тады я б рэалізаваць інтэрфейс як патэнтаванай рэгістратар. Калі прыходзіць час, каб перайсці да log4net я хацеў бы напісаць новую рэалізацыю - з log4net абгортку.

1
дададзена

Я хацеў бы вызначыць свой уласны інтэрфейс рэгістратара, падобную log4net, але, магчыма, трохі больш спэцыялізаваўся. Тады я б рэалізаваць інтэрфейс як патэнтаванай рэгістратар. Калі прыходзіць час, каб перайсці да log4net я хацеў бы напісаць новую рэалізацыю - з log4net абгортку.

1
дададзена

Было б сумяшчальна калі вызначыць інтэрфейс не толькі з такімі ж, як гэта вызначана ў log4net зборкі, але і ў тым жа прасторы імёнаў. Калі вы прыйдзеце выкарыстоўваць log4net - проста выдаліце ​​гэтую ўласную дэкларацыю інтэрфейсу (і яго рэалізацыя)

1
дададзена

Было б сумяшчальна калі вызначыць інтэрфейс не толькі з такімі ж, як гэта вызначана ў log4net зборкі, але і ў тым жа прасторы імёнаў. Калі вы прыйдзеце выкарыстоўваць log4net - проста выдаліце ​​гэтую ўласную дэкларацыю інтэрфейсу (і яго рэалізацыя)

1
дададзена

Было б сумяшчальна калі вызначыць інтэрфейс не толькі з такімі ж, як гэта вызначана ў log4net зборкі, але і ў тым жа прасторы імёнаў. Калі вы прыйдзеце выкарыстоўваць log4net - проста выдаліце ​​гэтую ўласную дэкларацыю інтэрфейсу (і яго рэалізацыя)

1
дададзена