我試圖爲對象實現一些隱式轉換。目前,我這樣做:在C#中隱式轉換而不創建新對象
public class PathSelector
{
private string _path = null;
public string Path
{
get { return _path; }
set
{
if (value != _path)
{
_path = value;
OnPropertyChanged("Path");
}
}
}
static public implicit operator string(PathSelector pathSelector)
{
return pathSelector.Path;
}
static public implicit operator PathSelector(string path)
{
return new PathSelector() { Path = path };
}
}
正如你可以在施法看到String
到PathSelector
我生成一個新的PathSelector
對象。
我用這樣的:
public PathSelector PluginPathSelector { get; set; } = new PathSelector();
public string PluginPath
{
get
{
return PluginPathSelector;
}
set
{
PluginPathSelector = value;
}
}
我不喜歡這個解決方案是,我總是創建一個新的對象時,我給你一個字符串轉換爲PathSelector
對象。這也意味着,在PathSelector
屬性中需要set
部分。我想將string
分配給已創建的對象。有沒有辦法來實現這個?
那麼有到不變性(!每次又名創建一個新的對象)的許多好處。由於該方法的靜態特性,沒有實例搶 - 點是,你可以在任何使用方法點。你應該在你的對象上創建一個方法來合併它們。 –
如何設置PluginPath,設置PluginPathSelector.Path屬性(與獲取它相同),我沒有理由在此處進行隱式轉換。實際上我只是看到代碼的問題,因爲PathSelector是一個實現INotifyPropertyChanged的類(並且實際上它檢查了Path在setter中的等價性) – Icepickle
@Ippickle這就是我所做的。但我想實現隱式強制轉換,以便在綁定場景中更方便地使用對象 –