Son kullanıcı için belirli arabirim türlerinin listesini sunma amacıyla, bir dizi nesneden küçük arabirimleri tek bir TInterfaceList 'store' içine saklıyorum. Arabirim bir 'GetName' işlevini gösterecektir, ancak diğer tüm yöntemler bu arabirim türüne özgüdür. Örneğin burada iki arayüzleri:Bir Delphi içinde birden çok arabirim türü saklamak ve bulmak için TInterfaceList
IBase = interface
//----------------------------------------
function GetName : string;
//----------------------------------------
end;
IMeasureTemperature = interface(IBase)
//------------------------------------
function MeasureTemperature : double;
//----------------------------------------
end;
IMeasureHumidity = interface(IBase)
//----------------------------------------
function MeasureHumidity: double;
//----------------------------------------
end;
Ben tek TInterfaceList içine bu ara yüzlerin birkaç koyun ve sonra ben (örneğin 'IMeasureTemperature') işaretçileri başka bir liste bina belirli bir arabirim türü için listeyi taramak istiyorum Bu arayüzleri ihraç eden nesnelere. Bu nesnelerin yerleri hakkında herhangi bir varsayım yapmak istemiyorum, bazıları birden fazla arayüz türünü ihraç edebilir.
If FList[I] is TMeasureTemperature then ..
ancak bir arayüz türüyle simliar bir şey yapmak istiyorum, bu mümkün mü: Ben gibi bir şey kullanarak bir sınıf hiyerarşisi ile bu yapabileceğini biliyor musunuz? (Eğer unitialized bellek bunları deneyin sürece) onlar oldukça güvenlidir,
var
oMTIntf: IMeasureTemperature;
...
If Supports(FList[I], IMeasureTemperature, oMTIntf) then ..
İlk listenizde bu arabirimleri uygulayan gerçek arabirim * türleri * veya object * örneklerine * başvurular olup olmadığını açıklığa kavuşturmak isteyebilirsiniz. Bu soruya cevap verirken, şimdiye kadar bu soruya cevap verenlerin hepsi, eskiden bahsetmek için sorunuzu okurken ... o zaman yine bir "TInterfaceList" içinde * tipini * saklayamaz gibi görünüyor. ... –