//解决方案一://Interf.cs 在项目InterF中
namespace InterF
{
public interface I_InterF
{
string F();
}
}
//A.cs 在项目A中
using InterF
namespace A
{
public class A_Class:I_InterF //继承 InterF 接口
{
public string F() //实现 InterF 中的 F()
{
return "aaaaaaa";
}
}
}
//B.cs 在项目B中
using InterF
namespace B
{
public class B_Class:I_InterF //继承 InterF 接口
{
public string F() //实现 InterF 中的 F()
{
return "bbbbbbb";
}
}
}
//Factory.cs 在项目Factory中
namespace Fac
{
public class Fac_Class
{
public I_InterF Fac_Function
{
string assumellyName = ConfigurationManager.AppSettings["AssumelyName"];
string constructorName = ConfigurationManager.AppSettings["ConstructorName"];
return (I_InterF)Assembly.Load(assumellyName).CreateInstance(constructorName);
}
}
}
//web.config
<add key="AssumelyName" value="A"/>
<add key="ConstructorName" value="A.A_Class"/>
//Test.cs 在项目BLL中
using Fac;
using InterF;namespace BLL
{
public class BLL_Class
{
public string BLL_Funtcion()
{
return (new Fac_Class()).Fac_Function().F();
}
}
}-------------------------------------------------------------------------------
//解决方案二:
//A.cs 在项目A中
namespace A
{
public class A_Class
{
public string F()
{
return "aaaaaaa";
}
}
}
//B.cs 在项目B中
namespace B
{
public class B_Class
{
public string F()
{
return "bbbbbbb";
}
}
}
//Factory.cs 在项目Factory中
namespace Fac
{
public class Fac_Class
{
public Object Fac_Function
{
string assumellyName = ConfigurationManager.AppSettings["AssumelyName"];
string constructorName = ConfigurationManager.AppSettings["ConstructorName"];
return Assembly.Load(assumellyName).CreateInstance(constructorName);
}
}
}
//web.config
<add key="AssumelyName" value="A"/>
<add key="ConstructorName" value="A.A_Class"/>
//Test.cs 在项目BLL中using Fac;
using A;
using B;
namespace BLL
{
public class BLL_Class
{
public string BLL_Funtcion()
{
return (new Fac_Class()).Fac_Function().F();
}
}
}
问题一: 解决方案一
在Factory.cs中制造了A的对象已接口InterF的方式返回,在 BLL中调用的是
Interf.cs中的F(),虽然A.cs和B.cs都继承了InterF的接口,为什么调用Interf.cs中的F()
就能得到 "aaaaaaa" 应该是调用A中的F()才能得到的呀
问题二: 解决方案二
没有使用接口,A中有个F(),B中也有个F() 分别再两个命名空间中(A,B)
制造一个A的对象:(new Fac_Class()).Fac_Function()
调用A中的方法:(new Fac_Class()).Fac_Function().F() 会出错
A中的F(),B中的F() 不是再两个命名空间中的吗,为什么会出错
namespace InterF
{
public interface I_InterF
{
string F();
}
}
//A.cs 在项目A中
using InterF
namespace A
{
public class A_Class:I_InterF //继承 InterF 接口
{
public string F() //实现 InterF 中的 F()
{
return "aaaaaaa";
}
}
}
//B.cs 在项目B中
using InterF
namespace B
{
public class B_Class:I_InterF //继承 InterF 接口
{
public string F() //实现 InterF 中的 F()
{
return "bbbbbbb";
}
}
}
//Factory.cs 在项目Factory中
namespace Fac
{
public class Fac_Class
{
public I_InterF Fac_Function
{
string assumellyName = ConfigurationManager.AppSettings["AssumelyName"];
string constructorName = ConfigurationManager.AppSettings["ConstructorName"];
return (I_InterF)Assembly.Load(assumellyName).CreateInstance(constructorName);
}
}
}
//web.config
<add key="AssumelyName" value="A"/>
<add key="ConstructorName" value="A.A_Class"/>
//Test.cs 在项目BLL中
using Fac;
using InterF;namespace BLL
{
public class BLL_Class
{
public string BLL_Funtcion()
{
return (new Fac_Class()).Fac_Function().F();
}
}
}-------------------------------------------------------------------------------
//解决方案二:
//A.cs 在项目A中
namespace A
{
public class A_Class
{
public string F()
{
return "aaaaaaa";
}
}
}
//B.cs 在项目B中
namespace B
{
public class B_Class
{
public string F()
{
return "bbbbbbb";
}
}
}
//Factory.cs 在项目Factory中
namespace Fac
{
public class Fac_Class
{
public Object Fac_Function
{
string assumellyName = ConfigurationManager.AppSettings["AssumelyName"];
string constructorName = ConfigurationManager.AppSettings["ConstructorName"];
return Assembly.Load(assumellyName).CreateInstance(constructorName);
}
}
}
//web.config
<add key="AssumelyName" value="A"/>
<add key="ConstructorName" value="A.A_Class"/>
//Test.cs 在项目BLL中using Fac;
using A;
using B;
namespace BLL
{
public class BLL_Class
{
public string BLL_Funtcion()
{
return (new Fac_Class()).Fac_Function().F();
}
}
}
问题一: 解决方案一
在Factory.cs中制造了A的对象已接口InterF的方式返回,在 BLL中调用的是
Interf.cs中的F(),虽然A.cs和B.cs都继承了InterF的接口,为什么调用Interf.cs中的F()
就能得到 "aaaaaaa" 应该是调用A中的F()才能得到的呀
问题二: 解决方案二
没有使用接口,A中有个F(),B中也有个F() 分别再两个命名空间中(A,B)
制造一个A的对象:(new Fac_Class()).Fac_Function()
调用A中的方法:(new Fac_Class()).Fac_Function().F() 会出错
A中的F(),B中的F() 不是再两个命名空间中的吗,为什么会出错
问题二:出错很正常啊,原因不在于A和B的共存而在于(new Fac_Class()).Fac_Function()创建的是一个object,而object根本没有F这个方法。
//Test.cs 在项目BLL中using Fac;
using A;
using B;
namespace BLL
{
public class BLL_Class
{
public string BLL_Funtcion()
{
object typeObject=(new Fac_Class()).Fac_Function().F();
if(typeObject is A.A_Class)
return ((A.A_Class)typeObject).F();
if(typeObject is B.B_Class)
return ((B.B_Class)typeObject).F();
}
}
}
InterF是怎么引用调用A中的F()来得到"aaaaaaa"的