簡體   English   中英

如何重載 C# 中的屬性設置器?

[英]How to overload a property setter in C#?

我決定在我的一些新項目中使用 SQLite。 這似乎正是我想要使用的,除了你不能將錢存儲為小數。 我試圖解決這個問題的方法是將貨幣值存儲為 INTEGER ,然后當我在 C# 程序中檢索數據時將其轉換為小數。 我的問題是,當我將 class 中的價格字段設置為數據庫中的值時,需要在 Price 屬性中輸入一個 INT 值,並將其轉換為十進制(可以如下所示進行):

public class ProductModel
{
    private decimal price { get; set; }
    public int Price
    {
        get 
        { 
            // Code
        }
        set { price = (decimal)(value / 100); } 
    }

}

但是,在我的代碼的其他地方,我希望能夠通過鍵入貨幣值的正常十進制格式來設置價格值

Product.Price = 1.99M

在我看來,一個非常簡單的方法是使用“重載屬性”,以便 class 可以處理兩種不同的輸入類型:

public class ProductModel
{
    private decimal price { get; set; }
    public int Price
    {
        get 
        { 
            // Code
        }
        set { price = (decimal)(value / 100); } 
    }
    public Decimal Price
    {
        get
        {
            // Code
        }
        set { price = value; }
    }
}

但正如我在網上看到的,C# 中不存在重載屬性。 有什么替代方法? 我可以只使用兩個重載方法,但是與 dapper 一起使用並不是很容易,因為 dapper 只是直接保存到類的屬性中

Sqlite 有一個適合 .NET 十進制的 NUMERIC 類型:

在此處輸入圖像描述

或者,

CREATE TABLE [TESTTable] (
  [Id] NUMERIC NOT NULL
, CONSTRAINT [PK_TESTTable] PRIMARY KEY ([Id])
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM