我有一個私人屬性和2個公共屬性(值和類型)的簡單類。我試圖找到一種方法來調用對象,以便它返回它的值屬性,而不必調用obj.value。我不認爲這是可能的。我可以使用C#中的對象名稱訪問對象屬性嗎?
這裏是我的想法:
public class myclass {
private int property1;
private int property2;
public string value;
public string type;
public myclass(int property1, int property2, string value, string type)
{
this.property1 = property1;
this.property2 = property2;
this.value = value;
this.type = type;
}
}
var obj = new myclass(1, 2, "abc", "string");
console.write(obj.value); // returns abc
console.write(obj.type); // returns string
console.write(obj); // expecting abc
是否有辦法在最後一行返回ABC這個語法?
你在問我爲什麼要實現這樣的目標?我正在使用Javascript編程模塊構建服務。這些對象是變量,我希望用戶只需通過編寫obj而不是obj.value來訪問它們。我需要C#(而不是Javascript)的這種行爲,因爲Javascript正在回調後端對象。如果我不必保留那些容易的私人物業,但我需要擁有它們。
UPDATE: 爲了更清楚:這個類是由JavaScript解釋(Jint在這種情況下)被調用,而類有,如果它的價值被更新來更新數據庫,所以需要私人財產。 這裏是我的實際代碼:
public class SmartNumeric : ISmartVariable
{
private Boolean _simulation;
private Guid UserId;
private long userKeyId;
private long variableKeyId;
private string Name;
public string type
{
get {
return "numeric";
}
}
private float _value;
public float value
{
get {
return _value;
}
set {
_value = value;
if (!_simulation)
new SmartCommon().SetValue(userKeyId, variableKeyId, value.ToString());
}
}
public SmartNumeric(Guid UserId, long userKeyId, long variableKeyId, string Name, float value, Boolean simulation)
{
this.Name = Name;
this._value = value;
this.UserId = UserId;
this.userKeyId = userKeyId;
this.variableKeyId = variableKeyId;
this._simulation = simulation;
}
}
因此,例如,用戶會寫自己的劇本就像
a = 45;
是在Javascript比
a.value = 45;
,其中一個是指更自然C#中的一個SmartNumeric對象。該對象接收更新,並且這是我需要返回到數據庫以更新值並需要其他屬性的位置。
爲什麼你需要這種行爲?你很可能會採取錯誤的做法來達到你需要達到的目標。 –
您要求的內容沒有意義。想想會有什麼影響。這意味着你永遠無法將'obj'賦值給另一個變量。例如'var obj2 = obj;'實際上將'obj.value'賦值給'obj2'。實際上,任何引用'obj'的表達式都會引用'obj.value'。所以你永遠無法操縱'obj'。 – RJM
我明白它沒有意義,但我想知道如果一些C#嚮導可以拿出一個訪問器魔術或什麼的。解決這個問題的最簡單的方法是創建一個簡單的對象(一個字符串),但找到一種將其他值關聯的方法。我不能只使用單獨的數組來保留這些屬性,因爲當我訪問該對象時,我無法訪問此數組...... – pdube