嗨,我有一個組裝問題。裝配問題
我有一個程序,誰創建一個類。在那個類中,我使用了我的不同DLL中的一些其他類。在那個DLL類的方法中,我必須使用Assembly類,但是我會參考程序Assembly,並且我不知道該怎麼做。
如果(在DLL)我的用戶Assembly.GetExecutingAssembly(),或CallingAssembly我總是得到DLL組件:/
的GetEntryAssembly總是做StackOverflow的例外。
在DLL中,我不能與程序有任何連接。
編輯:
DLL
public sealed class MapperSet<T> : MapperSetBase<T>, IMapperSet<T>
{
public MapperSet()
{
_Mapper = GetSpecificMapper();
//if (_mapper == null)
// throw new NullReferenceException();
}
// some methods, not use yet
}
public abstract class MapperSetBase<T> : IQuerySet
{
protected virtual IMapper GetSpecificMapper()
{
Type[] assemblyTypes = Assembly.GetExecutingAssembly().GetTypes();
IMapper mapper = null;
foreach (Type type in assemblyTypes)
{
if (type.GetInterfaces().Any(i => i == typeof(IMapper)))
{
FieldInfo[] fields = type.GetFields();
foreach (FieldInfo field in fields)
{
if (field.FieldType.GetGenericArguments().Count() > 0)
{
Type mapperFieldType = field.FieldType.GetGenericArguments()[0];
if (mapperFieldType == typeof(T))
{
mapper = (IMapper)Activator.CreateInstance(type);
}
}
}
}
}
}
程序代碼
public class DB : IMapper
{
public string ConnectionString
{
get { return "TestConnectionString"; }
}
public DBTypes DbType
{
get { return DBTypes.MsSql; }
}
public MapperSet<Person> Persons = new MapperSet<Person>();
public List<int> l1 = new List<int>();
}
在MapperSet有一些方法。當我調用其中的一個時,我必須從IMapper類獲得ConnectionString和DbType。
你是否100%確定它正在調用產生堆棧溢出異常的'GetEntryAssembly'?你可以顯示你稱之爲的代碼嗎? – 2011-04-30 12:08:44
刪除[assembly]標籤;它用於彙編語言問題。 – 2011-04-30 17:21:26