目前我正在试图设置一个字段,我需要在业务逻辑在这种情况下是懒惰内铸造的对象。 (是不是财产,有必要设置字段) 我得到的错误是懒惰的,不能转化为懒惰 你可以看到:C#拉姆达
Object of type 'BusinessLogic.Lazy
1[System.Object]' cannot be converted to type 'BusinessLogic.Lazy
1[BusinessLogic.ArtikelBLL]
我用这条线来获得一个动态库。
dynamic repository = Activator.CreateInstance(typeof(GenericRepository<>).MakeGenericType(typeArgs));
然后我尝试设置字段的值,但它失败:
fInfo.SetValue(obj, Lazy.From(() => repository.GetDataById(id)));
我试图解决这个问题很多不同的方式。 不知怎的,我要投repository.GetDataById(id)
它正在寻找的实体,在这种情况下是ArtikelBLL(我可以通过pInfo.PropertyType
得到)。 但通过做(ArtikelBLL)repository.GetDataById(id)
它不会保持面向对象。 任何人都可以帮助我吗?
一些信息,你可以提供更好的答案:为什么它不再是面向对象的,如果你写的'(ArtikelBLL)repository.GetDataById(ID)'?该领域的类型是什么? 'GenericBLL'和'ArtikelBLL'之间有什么关系(我想后者是前者的一个子类,但你可以说明)? GetDataById返回的对象是什么类型? – 2011-03-17 15:16:58
ArtikelBLL确实是GenericBLL的一个子类。由于存储库是动态的,因此GetDataById应返回存储库中的T的实体(本例中为ArtikelBLL)。它不是面向对象的,因为它在forloop中,并且存储库需要返回其他子类(例如,我有LieferantenBLL),如果我将它转换为ArtikelBLL,则会返回错误。该字段的类型是懒惰。 –
Stupidity
2011-03-17 15:30:27