C# 无法从 'ref xxx' 转换为 'ref object'
C# Cannot convert from 'ref xxx' to 'ref object'
我定义了一个使用 ref 对象作为参数的方法。当我尝试使用 ref List 调用它时,它告诉我无法从 ref List 转换为 ref 对象。
我做了很多搜索以找到答案。但是,大多数答案是 "you don't need ref here" 或者有变通办法。
似乎无法从 'ref [Inherited]' 转换为 'ref [Base]',即使使用 ref (Base)[Inherited]。不知道我说的对不对
我想要的是在 set { } 块中只写 1 行来更改值并发送通知。有什么建议么?
class CommonFunctions
{
public static void SetPropertyWithNotification(ref object OriginalValue, object NewValue, ...)
{
if(OriginalValue!= NewValue)
{
OriginalValue = NewValue;
//Do stuff to notify property changed
}
}
}
public class MyClass : INotifyPropertyChanged
{
private List<string> _strList = new List<string>();
public List<string> StrList
{
get { return _strList; }
set { CommonFunctions.SetPropertyWithNotification(ref _strList, value, ...);};
}
}
使用泛型和 Equals 方法
class CommonFunctions
{
public static void SetPropertyWithNotification<T>(ref T OriginalValue, T NewValue)
{
if (!OriginalValue.Equals(NewValue))
{
OriginalValue = NewValue;
//Do stuff to notify property changed
}
}
}
public class MyClass
{
private List<string> _strList = new List<string>();
public List<string> StrList
{
get { return _strList; }
set { CommonFunctions.SetPropertyWithNotification(ref _strList, value); }
}
}
我定义了一个使用 ref 对象作为参数的方法。当我尝试使用 ref List 调用它时,它告诉我无法从 ref List 转换为 ref 对象。 我做了很多搜索以找到答案。但是,大多数答案是 "you don't need ref here" 或者有变通办法。
似乎无法从 'ref [Inherited]' 转换为 'ref [Base]',即使使用 ref (Base)[Inherited]。不知道我说的对不对
我想要的是在 set { } 块中只写 1 行来更改值并发送通知。有什么建议么?
class CommonFunctions
{
public static void SetPropertyWithNotification(ref object OriginalValue, object NewValue, ...)
{
if(OriginalValue!= NewValue)
{
OriginalValue = NewValue;
//Do stuff to notify property changed
}
}
}
public class MyClass : INotifyPropertyChanged
{
private List<string> _strList = new List<string>();
public List<string> StrList
{
get { return _strList; }
set { CommonFunctions.SetPropertyWithNotification(ref _strList, value, ...);};
}
}
使用泛型和 Equals 方法
class CommonFunctions
{
public static void SetPropertyWithNotification<T>(ref T OriginalValue, T NewValue)
{
if (!OriginalValue.Equals(NewValue))
{
OriginalValue = NewValue;
//Do stuff to notify property changed
}
}
}
public class MyClass
{
private List<string> _strList = new List<string>();
public List<string> StrList
{
get { return _strList; }
set { CommonFunctions.SetPropertyWithNotification(ref _strList, value); }
}
}