2

当我想在“return (byte)SaleMode.ToPost;”行中使用“SetSaleMode”时,我有一个包含这些字段和这些静态方法的类 发生此错误,有人可以帮助我吗?

这些是我的代码:

公共枚举 SaleMode:byte { ToPost = 0, Downloadable = 1, DownloadableAndFreeTrial = 2, SourceSiteSale = 3 };
公共枚举 FilePriceMode { ProductFile = 0, Free = 1, FreeTrial = 2 };

公共类 ProductDAL : BaseDAL {

#region fields public Int64 ID { get; set; } public string Name { get; set; } public Int64 Price { get; set; } public bool Private { get; set; } public Int64 ProductType { get; set; } public string Notes { get; set; } public string Image { get; set; } public DateTime Date { get; set; } public Int64 Owner { get; set; } public long Counter { get; set; } public bool Proved { get; set; } public byte[] Files { get; set; } public byte SaleMode { get; set; } public string SourceSiteSaleAddress { get; set; } public List<FilesOfProductsDAL> FOfPro; #endregion fields #region constructor public ProductDAL() { ID = -1; FOfPro = new List<FilesOfProductsDAL>(); } public ProductDAL(string saveIconPath) { ID = -1; this.Image = saveIconPath; FOfPro = new List<FilesOfProductsDAL>(); } #endregion constructor #region method public static long InsertProduct(ProductDAL objProductDAL) { try { Int64 ID; objProductDAL.SaleMode = SetSaleMode(objProductDAL); SqlCommand Sqlcomm = new SqlCommand(); Sqlcomm.CommandText = StoreQueries.InsertProduct; Sqlcomm.CommandType = CommandType.StoredProcedure; Sqlcomm.Parameters.AddWithValue("@Name", SqlDbType.NVarChar).Value = objProductDAL.Name; Sqlcomm.Parameters.AddWithValue("@Price", SqlDbType.BigInt).Value = objProductDAL.Price; Sqlcomm.Parameters.AddWithValue("@Private", SqlDbType.Bit).Value = objProductDAL.Private; Sqlcomm.Parameters.AddWithValue("@ProductType", SqlDbType.BigInt).Value = objProductDAL.ProductType; Sqlcomm.Parameters.AddWithValue("@Notes", SqlDbType.NVarChar).Value = objProductDAL.Notes; Sqlcomm.Parameters.AddWithValue("@Date", SqlDbType.DateTime).Value = objProductDAL.Date; Sqlcomm.Parameters.AddWithValue("@Image", SqlDbType.NVarChar).Value = objProductDAL.Image; Sqlcomm.Parameters.AddWithValue("@Owner", SqlDbType.BigInt).Value = 1019;//objProductDL.Owner ; Sqlcomm.Parameters.AddWithValue("@SaleMode", SqlDbType.VarBinary).Value = objProductDAL.SaleMode; if (objProductDAL.Files == null) Sqlcomm.Parameters.AddWithValue("@Files", SqlDbType.VarBinary).Value =System.Data.SqlTypes.SqlBinary.Null;// DBNull.Value; else Sqlcomm.Parameters.AddWithValue("@Files", SqlDbType.VarBinary).Value = objProductDAL.Files; if (objProductDAL.SourceSiteSaleAddress == null) Sqlcomm.Parameters.AddWithValue("@SourceSiteSaleAddress", SqlDbType.NVarChar).Value = DBNull.Value; else Sqlcomm.Parameters.AddWithValue("@SourceSiteSaleAddress", SqlDbType.NVarChar).Value = objProductDAL.SourceSiteSaleAddress; Sqlcomm.Parameters.AddWithValue("@CheangedSet", SqlDbType.NVarChar).Value = "محصول جدید است."; Sqlcomm.Parameters.AddWithValue("PID", SqlDbType.BigInt).Value =objProductDAL.ID; ID = Convert.ToInt64(ExecuteScalar(Sqlcomm)); objProductDAL.Image = objProductDAL.Image.Replace(Path.GetFileNameWithoutExtension(objProductDAL.Image), ID.ToString() ); for (int i = 0; i <objProductDAL.FOfPro.Count; i++) { objProductDAL.FOfPro[i].FileUrl = objProductDAL.FOfPro[i].FileUrl.Replace(Path.GetFileNameWithoutExtension(objProductDAL.FOfPro[i].FileUrl), Path.GetFileNameWithoutExtension(objProductDAL.FOfPro[i].FileUrl) + "." + ID.ToString() + "." + i.ToString()); } UpdateFileAndImageUrl(Store.SerializeData(objProductDAL.FOfPro), objProductDAL.Image, ID); return ID; } catch (Exception) { throw; } } private static byte SetSaleMode(ProductDAL objProductDAL) { if (objProductDAL.SourceSiteSaleAddress == null || objProductDAL.SourceSiteSaleAddress == "") { if (!ProductTypesDAL.IsDownloadable(objProductDAL.ProductType)) return (byte)SaleMode.ToPost; if (objProductDAL.FOfPro.Exists(priceMode => priceMode.FilePriceMode == (int)FilePriceMode.FreeTrial)) return (byte)SaleMode.DownloadableAndFreeTrial; else return (byte)SaleMode.Downloadable; } else return (byte)SaleMode.SourceSiteSale; }

}

4

1 回答 1

6

您有一个名为SaleModeenum的属性SaleMode

当您SaleMode在类中使用时,您指的是属性,而不是枚举。该属性会在整个范围内隐藏枚举。

我建议您重命名该属性,使其不会与枚举冲突。

于 2012-05-30T16:26:16.837 回答