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.

Člen

Zobrazeno 11 zpráv z 11.
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.