我正在使用下面描述的方法。即返回动态结果。
public static dynamic GetCouponDetailsbyCouponID(Guid couponID)
{
using (var loEntities = new Entities())
{
dynamic nonWinnerGift = (from nw in loEntities.CorporateNonWinnerGift
join um in loEntities.Users on nw.UserID equals um.Id
where nw.IsDeleted != true && nw.CouponID == couponID
select new
{
FullName = (um.FirstName + " " + um.LastName),
Title = nw.Title,
Description = nw.Description,
LogoName = nw.LogoName,
CouponID = nw.CouponID,
IsDiscount = nw.IsDiscount,
Discount = nw.Discount,
Desclaiemer = nw.Desclaiemer
}).SingleOrDefault();
return nonWinnerGift;
}
}
dynamic expandDoObject = new ExpandoObject();
当我尝试访问“couponData.LogoName”时抛出了动态运行时异常。请在下面找到我的异常(exception) “类型为‘Microsoft.CSharp.RuntimeBinder.RuntimeBinderException’的第一次机会异常发生在 ClosetAuctions.dll 中 附加信息:'object' 不包含 'LogoName' 的定义”
var couponData = CorporateNonWinnerGiftBL.GetCouponDetailsbyCouponID(couponID);
if (couponData != null)
{
string fileName = couponData.LogoName;
}
最佳答案
不建议在您的用例中使用动态对象。但这是我的看法。
无论如何,要访问动态对象的成员,
string fileName = couponData.GetType().GetProperty("LogoName").GetValue(couponData, null);
关于c# - “对象”不包含动态的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32348507/