我在c#中编写了一个围绕非托管代码的包装器。非托管代码根据两个方法调用创建会话和会话可以是动态的也可以是静态的。
动态和静态包含不同的类型,因此我不能在这里使用接口。
如果调用CreateDynamic,那么它是动态的 否则它是静止的。
我的初级课程设计看起来像这样。
public class Session
{
public void CreateDynamic()
{
dynamic = new Dynamic();
}
public void CreateStatic()
{
stat = new Static();
}
public Dynamic dynamic;
public Static stat;
}
创建会话后,该对象应包含适用于创建的会话的方法和属性。访问未实例化的子会话将导致空引用异常。有没有办法解决这个问题?
答案 0 :(得分:0)
您可以创建两个不同的会话类,并使用静态类来创建适当的会话。例如:
interface ISession
{
// Common methods
}
interface IDynamicSession : ISession
{
// Methods unique to a dynamic session
}
interface IStaticSession : ISession
{
// Methods unique to a static session
}
public class DynamicSession : IDynamicSession
{
}
public class StaticSession : IStaticSession
{
}
public static class Session
{
public IDynamicSession CreateDynamic()
{
return new DynamicSession();
}
public IStaticSession CreateStatic()
{
return new StaticSession();
}
}