相关疑难解决方法(0)

反映基类的私有字段

这是结构:

MyClass:SuperClass2

SuperClass2:SuperClass1

superClass2位于Product.Web中,SuperClass1位于.NET System.Web程序集中

我试图强制一个值进入SuperClass1上的私有bool字段.但无论我尝试什么,我都无法让领域从反思回来.

我使用以下代码与不同的BindingFlag组合,但到目前为止没有任何工作.SuperClass1是一个抽象类.

((SuperClass1)this).GetType().GetFields(System.Reflection.BindingFlags.NonPublic);
Run Code Online (Sandbox Code Playgroud)

注意: 当我使用GetProperties()时,我得到了一个很好的大清单,但是当我指定任何绑定标志时,即使有匹配的属性,我什么也得不到.这是怎么回事?

此外,该字段未标记为内部

显然我会使用GetField(字符串名称,BindingFlags),但我甚至无法使GetFlags()工作.

更新:我已经尝试按照建议添加BindingFlags.Instance,但它不起作用(无论如何都是预期的).我找回了来自SuperClass1类继承自的2个字段.与GetField一起使用时返回null(字符串名称,标志)

这是我试图获取该字段的基类的代码

public abstract class BaseValidator : Label, IValidator
  {
    private bool propertiesChecked;
...
}
Run Code Online (Sandbox Code Playgroud)

.net c# reflection

24
推荐指数
3
解决办法
3万
查看次数

带有加密触发器的TooManyRowsAffectedException

我正在使用nHibernate更新表中的2列,其中包含3个加密触发器.触发器不归我所有,我不能对它们进行更改,所以不幸的是我无法在它们内部设置NOCOUNT.

有没有其他方法可以解决在提交时抛出的TooManyRowsAffectedException?

更新1

到目前为止,我唯一能解决问题的方法就是绕过.Save例程

var query = session.CreateSQLQuery("update Orders set Notes = :Notes, Status = :Status where OrderId = :Order");
query.SetString("Notes", orderHeader.Notes);
query.SetString("Status", orderHeader.OrderStatus);
query.SetInt32("Order", orderHeader.OrderHeaderId);
query.ExecuteUpdate();
Run Code Online (Sandbox Code Playgroud)

它感觉很脏并且不容易伸展,但它没有陨石坑.

sql-server nhibernate triggers

13
推荐指数
2
解决办法
3595
查看次数

标签 统计

.net ×1

c# ×1

nhibernate ×1

reflection ×1

sql-server ×1

triggers ×1