Diskuze: Implementace interface pomocí property
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 11 zpráv z 11.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Díky, ale to není přesně ono. V tvém případě třída SomeClass implementuje interface pomocí metod A, B a nikoli pomocí property MyProperty. Možná upřesním účel. Většinou se do třídy SomeClass injektuje přes konstruktor objekt který implementuje rozhraní IMy a celá ta syntaxe pak slouží jen k tomu abych nemusel psát someClass.MyProperty.A(), ale jen someClass.A().
class My:IMy{
public bool A(){
return false;
}
public int B(){
return 0;
}
}
class SomeClass:IMy
{
public SomeClass(IMy my){
this.MyProperty = my;
}
public IMy MyProperty{get;set;}
}
Děkuji
ty si asi chtěl tenhle příklad co ?
https://drive.google.com/…pe5w_rF/view?…
ale ten je na web stránkách Microsoftu ...
jinak samozřejmě se to dá napsat bez toho interface .. ten je tam je proto
aby mohl MS implementovat code-behind pro řízení obsluhy všech binding
klauzulí.... chápeš jo ?
když se ponoříš do zdrojáku sem
https://uloz.to/…ntybasic-zip
tak bys to měl pochopit ..
Ahoj jen přikládám příklad toho jak to udělat v Delphi. Jestli je ta property public nebo private to není tolik podstatné, pokud je to ale zpřístupněné přes interface, pak aspoň getter dám raději public.
type
IMyInterface = interface
procedure P1;
procedure P2;
end;
TMyClass = class(TObject, IMyInterface)
FMyInterface: IMyInterface;
property MyInterface: IMyInterface read FMyInterface implements IMyInterface;
end;
var
MyClass: TMyClass;
MyInterface: IMyInterface;
begin
MyClass := TMyClass.Create;
MyClass.FMyInterface := ...// some object whose class implements IMyInterface
MyInterface := MyClass;
MyInterface.P1;
end;
Pokud vím, toto v C# nefunguje. Buď musíš interface implementovat třídou a metodami provolávat tvou property, nebo se musíš odkazovat přímo na property.
Dekuji za potvrzeni Patriku, vypada to tak.
Peta
Nemel jsi nahodou na mysli explicitni implementaci interface? Viz treba
public interface IDog
{
string Greet();
}
public interface ICat
{
string Greet();
}
public class Animal : IDog, ICat
{
string ICat.Greet() => "Meow";
string IDog.Greet() => "Woof!";
}
public class Program
{
void Main()
{
var animal = new Animal();
string cat = ((ICat)animal).Greet(); //meow
string dog = ((IDog)animal).Greet(); //woof
}
}
vajkuba1234
Dík za snahu, ale to je něco jiného, v tvém případě se jedná o kolizi
dvou jmen metod v interfacech. Dnes už vím že to co jsem chtěl C# neumí,
ale svedu bez toho žít. 
Zobrazeno 11 zpráv z 11.