Ableiten einer Instanz zur Behandlung eines Objekts in C#C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Ableiten einer Instanz zur Behandlung eines Objekts in C#

Post by Anonymous »

Ich erweitere meine C#-J2K-Bibliothek, um Codecs aus anderen Assemblys dynamisch zu registrieren. Dieser Teil funktioniert, aber ich habe Probleme, IsAssignableFrom(TypeInfo) zu verstehen und herauszufinden, welche Klasseninstanz einen bestimmten Typ (SKBitmap, Image usw.) verarbeiten soll.
Bisher habe ich mir Folgendes ausgedacht. Ich habe eine Schnittstelle namens IImageCreator und alle Codecs werden in
instanziiert

Code: Select all

static readonly List _creators
Ich habe dann eine abstrakte Basisklasse, die IImageCreator wie folgt implementiert:

Code: Select all

abstract class ImageCreator : IImageCreator
Die Codecs werden dann wie folgt in versiegelte Klassen implementiert:

Code: Select all

sealed class SKBitmapImageCreator : ImageCreator {...}
sealed class WindowsBitmapImageCreator : ImageCreator {...}
usw.
Ich habe eine statische Methode zum Kodieren eines Bildes:

Code: Select all

static BlkImgDataSrc ToPortableImageSource(object imageObject)
{
_creators.Single(c => c.GetType().GetTypeInfo().IsAssignableFrom(imageObject.GetType().GetTypeInfo()));
Hier bleibe ich hängen, weil es eine Ausnahme auslöst. Sequenz enthält kein passendes Element
Beachten Sie, dass imageObject von einem behandelten Typ wie SKBitmap sein wird
Ich hatte den Eindruck, dass dies die richtige Instanz zur Verarbeitung des imageObject basierend auf ableiten würde Dokumentation:

Code: Select all

Returns true if any of the following conditions is true:
(...)
c is a generic type parameter, and the current instance represents one of the constraints of c.
Wo bin ich vom Weg abgekommen? Wie kann ich die richtige Instanz für die Verarbeitung des Objekts ableiten?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post