Je suis actuellement en train d'essayer de définir un champ dont j'ai besoin dans la logique métier qui est dans ce cas Lazy. (oui non la propriété, il est nécessaire de définir le champ) je reçois l'erreur Lazy ne peut pas être converti en Lazy comme vous pouvez le voir:C# coulée d'un objet dans lambda
Object of type 'BusinessLogic.Lazy
1[System.Object]' cannot be converted to type 'BusinessLogic.Lazy
1[BusinessLogic.ArtikelBLL]
J'utilise cette ligne pour obtenir un référentiel dynamique .
dynamic repository = Activator.CreateInstance(typeof(GenericRepository<>).MakeGenericType(typeArgs));
Ensuite, j'essaie de définir la valeur du champ, mais il échoue:
fInfo.SetValue(obj, Lazy.From(() => repository.GetDataById(id)));
J'ai essayé de le résoudre de nombreuses façons différentes. D'une manière ou d'une autre, je dois lancer repository.GetDataById(id)
vers l'entité recherchée, qui est dans ce cas ArtikelBLL (que je peux traverser pInfo.PropertyType
). Mais en faisant (ArtikelBLL)repository.GetDataById(id)
il ne restera pas orienté objet. Quelqu'un peut-il m'aider s'il vous plaît avec ceci?
Quelques informations que vous pourriez fournir pour de meilleures réponses: Pourquoi ne serait-il plus orienté objet si vous avez écrit '(ArtikelBLL) repository.GetDataById (id)'? Quel est le type du champ? Quelle est la relation entre 'GenericBLL' et' ArtikelBLL' (je suppose que l'un est le dernier est une sous-classe de l'ancien, mais vous pourriez clarifier)? Quel type est l'objet renvoyé par GetDataById? –
ArtikelBLL est en effet une sous-classe de GenericBLL. Parce que le référentiel est dynamique, GetDataById doit renvoyer l'entité (dans ce cas ArtikelBLL) qui est T dans le référentiel. Il n'est pas orienté objet car il est dans un forloop et le référentiel devrait aussi retourner d'autres sous-classes (par exemple j'ai LieferantenBLL), ce qui retournerait des erreurs si je l'ai casté à ArtikelBLL. Le type du champ est Lazy . –
Stupidity