在C++中,可以將函數傳遞給一個常量爲const的對象。這迫使代碼將該對象視爲「只讀」(忽略了可以使用強制轉換去除常量的事實)。我試圖用C#來做同樣的事情。我有一個用戶將實現的界面。其中一個方法將被賦予一個對象作爲參數。如何在方法範圍內使對象爲'const',否則爲可變。將C#中的Const對象作爲參數
解決方案:接口。我做了一個界面,其中唯一可用的屬性是'get'。
public interface IVal { ... }
public interface IFoo
{
IVal Val { get; }
}
public class Foo : IFoo
{
public IVal Val { get; }
}
我通過界面傳遞,一切都很神奇。但是,在我的具體課上,我想有一個「設置」可用。這將允許我設置具體的類價值。我的具體課程會如何?
我在考慮使用'internal'關鍵字。我讀到它暴露了方法/屬性在你自己的程序集中編碼。這是我的答案嗎?
編輯:爲了更好地說明這一點,我添加了一個可以自動爲我施放的setter。然而,對於每個屬性,這是一個很大的但卻難免重複碼:
private Val _val;
public IVal Val
{
get { return this._val; }
set { this._val = value as Val; }
}
有這樣的一個二傳手可能是一個壞主意。如果我嘗試將它設置爲不是'Val'的東西,它會默默地將其設置爲'null'。這不是大多數人所期望的。你應該決定是否要'Val'或'IVal'並堅持下去。 – svick