小编man*_*llt的帖子

VB.NET - 调用多个构造函数

我是开发人员,没有VB.NET的经验.

场景:

Namespace Presenters
    Public Class BaseFooPresenter

        ' assuming the public default parameterless constructor

        Public Sub New(ByVal strvar As String)
            ' TODO with strvar variabile
        End Sub

    End Class

    Public Class FooPresenter
           Inherits BaseFooPresenter

        Public Sub New(ByVal boolvar As Boolean)
            ' TODO with boolvar variabile
        End Sub

        Public Sub New(ByVal boolvar As Boolean, _
                       ByVal objvar As Object)
            MyBase.New(String.Empty)
            Me.New(true)
            ' TODO with objvar variabile
        End Sub

    End Class
End Namespace
Run Code Online (Sandbox Code Playgroud)

在第二个FooPresenter构造函数的代码我得到一个错误

"构造函数调用仅在实例构造函数的第一个语句中有效."

在:

            Me.New(true)
Run Code Online (Sandbox Code Playgroud)

如果我颠倒了订单,我会收到错误:

            MyBase.New(String.Empty)
Run Code Online (Sandbox Code Playgroud)

我可以创建一个方法SetValues(... parameters ...)并从两个构造函数中调用它,但有人知道一个解决方法以避免此错误吗?为什么编译器不会验证在重载之前调用基本构造函数的可能性构造函数? …

.net vb.net constructor class

11
推荐指数
2
解决办法
2万
查看次数

NHibernate Evict按类型而不是实例

我正在迁移这样的应用程序:

Vehicle v = null;
using (ISession session = MyNHibernateSession())
{
    v = Vehicle.FindById(1);
}

using (ISession session = MyNHibernateSession())
{
    // somwwhere into these4 lines Vehicle comes Finded
    DoSomething();
    DoSomething2();
    DoSomething3();
    DoSomething4();
    DoSomething5();
    DoSomething6();

    // if i do this i get an error "another object with the same id etc etc etc
    session.Update(v);
}
Run Code Online (Sandbox Code Playgroud)

我不想做这样的事情:

    session.EvictAllByType(typeof(Vehicle));
Run Code Online (Sandbox Code Playgroud)

可能吗?怎么样?谢谢

c# nhibernate session isession

7
推荐指数
2
解决办法
1540
查看次数

如何从Castle ActiveRecord SessionScope检索当前的NHibernate Session对象

我有一个开放的Castle ActiveRecord SessionScope.我需要使用包装在SessionScope中的nhibernate会话.

如何从SessionScope检索当前的NHibernate会话对象?

非常感谢你的回复.

[更新]我有这个代码

    ISession session = SessionScope.Current.GetSession( );
Run Code Online (Sandbox Code Playgroud)

但我不知道什么传递给GetSession参数

nhibernate session castle-activerecord object session-scope

6
推荐指数
2
解决办法
2917
查看次数

重载显式CAST运算符

我有这段代码:

public class Leg : ProxiestChild
{
    public virtual Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

问题是:

var leg = new Leg(); // leg is not Leg, instead ProxiedLeg

var trueleg = (Leg)leg; // exception leg is a ProxiedLeg
Run Code Online (Sandbox Code Playgroud)

我需要这样的东西

public class ProxiestChild
{
    // some method that overloads explicit CAST
    // where receiving the proxied object i returns the unproxied object
    // to be casted
}
Run Code Online (Sandbox Code Playgroud)

.net c# proxy casting operator-overloading

5
推荐指数
1
解决办法
2万
查看次数

使用延迟加载的NHibernate ObjectProxy转换

我定义:

[ActiveRecord("BaseEntity", Lazy = true )]
class BaseClass {}

[ActiveRecord("DerivedEntity", Lazy = true )]
class DerivedClass : BaseClass {}
Run Code Online (Sandbox Code Playgroud)

在DB BaseEntity和DerivedEntity中,1 = 1

我创造:

BaseClass myClass = New DerivedClass();
Run Code Online (Sandbox Code Playgroud)

问题:

当我试着问

myClass is DerivedClass
Run Code Online (Sandbox Code Playgroud)

我得到"假",因为myClass不是DerivedClass而是BaseClassProxy.

没有延迟加载,NHibernate不会创建代理对象,我没有这个问题.

当我尝试将myClass转换为DerivedClass时,我得到了这个错误(显然),因为我尝试将BaseClassProxy对象强制转换为DerivedClass.

Unable to cast object of type 'Castle.Proxies.BaseClassProxy' to type 'DerivedClass'.
Run Code Online (Sandbox Code Playgroud)

问题:

  1. 如何获取实际分配的对象类型以将其与DerivedClass进行比较?

  2. 是否可以转换BaseClassProxy对象以获取DerivedClass的实例?

感谢您的答复.

c# nhibernate casting lazy-loading proxy-classes

4
推荐指数
1
解决办法
2159
查看次数