覆盖对象
我有一种情况,我得到一个对象的引用,我想用另一个相同类型的对象“覆盖”它。我通过设计知道这些物体是同一类型的。我无法访问此函数中的父对象。覆盖对象
的数据对象是定义为这样的:
Class DataObject
{
public List<int> Stuff = new List<int>();
}
然后有一个方法
void DoStuff(object obj)
{
// At this point I know that obj is List<int>
// Create new object from some source
var newList = new List<int>();
// Here I would like to make the passed object the new object
(the pointer of obj) = (the pointer of newlist)
}
我不知道这是可能的。这只是我现在头撞我头几个小时,我的大脑似乎已停止工作。
在此先感谢
约翰
通行证对象by reference:
void DoStuff(ref DataObject dataObject)
{
dataObject = ...;
}
ref object
这里将不再允许然而,。
不,您的当前代码不可能 - 引用是按值传递的,因此完全独立于您最初访问它的方式。即使您将obj
更改为ref
参数,也将无法使用ref Stuff
调用该方法,因为这些类型不正确。你可以潜在与通用参数做到这一点:
void DoStuff<T>(ref T obj)
{
object newList = new List<int>();
obj = (T) newList;
}
这是相当可怕的,虽然。
这通常是设计的气味要要做到这一点 - 如果你能解释更多关于更大的图片,我们可能会帮助更多。
我有一个命令对象模型,允许一起管道命令。命令的类型是CommandBase
obj = newList
如果将obj的指针改为newList或newList的指针,它将会使它变为obj?
因为obj是主DTO的成员。如果你这样做了,主对象仍然会引用旧对象,而obj只是对新对象的引用。 –
你是不是很努力地只是试图替换东西的内容是你?例如'void DoStuff(){this.Stuff = new List; } –