gpt4 book ai didi

c# - CSLA .NET - Child_Fetch 未按预期工作

转载 作者:太空宇宙 更新时间:2023-11-03 10:59:22 26 4
gpt4 key购买 nike

我最近在 http://forums.lhotka.net/ 上发布了这个,但我没有收到回复。希望我在这里有更好的运气。这是我的问题。

我正在使用 CSLA .NET 4.5,我最近向 BusinessBase 添加了一个额外的 Child_Update 方法以支持其父 BusinessListBase 批量保存。但是,这似乎在我们的系统中引入了一个错误。看起来如果您有两个 Child_Update 方法并且其中一个是无参数的,则不会调用无参数的方法。即使您指定的 DataPortal.UpdateChild 没有除子对象之外的其他参数。

伪代码示例:

public class SomeChild : BusinessBase<SomeChild>
{
//No longer called
private void Child_Update() {}

//Newly added
private void Child_Update(SomeNewParent parent) {}
}

public class SomeLegacyParent : BusinessBase<SomeLegacyParent>
{
private static readonly PropertyInfo<SomeChild> SomeChildProperty =
RegisterProperty<SomeChild>(x => x.SomeChild, RelationshipTypes.Child);

public SomeChild SomeChild
{
get { return GetProperty(SomeChildProperty); }
set { SetProperty(SomeChildProperty, value); }
}

//Use to call Child_Update(), but now
//calls Child_Update(SomeNewParent parent)
DataPortal.UpdateChild(ReadProperty(SomeChildProperty));
}

public class SomeNewParent : BusinessBase<SomeNewParent>
{
private static readonly PropertyInfo<SomeChild> SomeChildProperty =
RegisterProperty<SomeChild>(x => x.SomeChild, RelationshipTypes.Child);

public SomeChild SomeChild
{
get { return GetProperty(SomeChildProperty); }
set { SetProperty(SomeChildProperty, value); }
}

//Calls Child_Update(SomeNewParent parent) --- as expected
DataPortal.UpdateChild(ReadProperty(SomeChildProperty), this);
}

现在我知道 CSLA 使用反射来找到要调用的正确数据访问方法,但是我不确定为什么无法根据传递给 DataPortal.UpdateChild 的参数区分无参数方法和参数化方法?这可能是 CSLA 错误还是我遗漏了什么?

最佳答案

嗯,我怀疑这可能是 Csla 中的错误。尝试将 Child_Update() 更改为 Child_Update(SomeLegacyParent) 这样您就不再拥有无参数的 Child_Update。您可能还必须更改对 UpdateChild 的遗留父级调用以传递“this”。

编辑:根据此答案评论中链接的线程,此问题已在 Csla 中修复。

关于c# - CSLA .NET - Child_Fetch 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18262876/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com