有我一個通用的選擇我的界面是這樣的:的反思形式創建實例與通用接口
public interface IMyInterface{
void ok();
}
var maps = (from t in types
from i in t.GetInterfaces()
where typeof(IMyInterface).IsAssignableFrom(t) &&
!t.IsAbstract &&
!t.IsInterface
select (IMyInterface)Activator.CreateInstance(t)).ToArray();
但我改變了我的接口通用,
public interface IMyInterface<T>{
void ok<T>();
}
var maps = (from t in types
from i in t.GetInterfaces()
where i.IsGenericType
&& i.GetGenericTypeDefinition() == typeof(IMyInterface<>)
&& !t.IsAbstract
&& !t.IsInterface
select ???????????????????????????????
).ToArray();
但現在的鑄造不工作。
select (IMyInterface<>)Activator.CreateInstance(t)).ToArray();
給鑄造造成錯誤。
你的方法聲明是錯誤的,太糟糕了,你省略了它。它必須是T型通用的。然後使用'IMyInterface'而不是IMyInterface <>。 IMyInterface和T都需要在兩個項目引用的程序集中聲明。相當不可能是一個正確的方法。 –