2012-05-30 40 views
2

當我想在「return(byte)SaleMode」行中使用「SetSaleMode」時,我有一個包含這些字段和這些靜態方法的類。發佈;」發生此錯誤,任何人都可以幫助我嗎?錯誤:非靜態字段,方法或屬性需要對象引用

這些都是我的代碼:

public enum SaleMode:byte { ToPost = 0, Downloadable = 1, DownloadableAndFreeTrial = 2, SourceSiteSale = 3 }; 
public enum FilePriceMode { ProductFile = 0, Free = 1, FreeTrial = 2 };

public class 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; }

}

回答

6

您有一個名爲SaleMode性質就像枚舉SaleMode

當您在課堂中使用SaleMode時,您指的是屬性,而不是枚舉。該屬性在整個範圍內隱藏枚舉。

我建議您重命名屬性,以便它不與枚舉衝突。

+0

非常感謝你,我太粗心了 – samira

相關問題