我有以下代碼:鑄造一個通用對象的對象與泛型類型的接口
public class EntityFilter<T>
{}
public interface IEntity
{}
public class TestEntity : IEntity
{}
class Program
{
static void Main(string[] args)
{
var ef = new EntityFilter<TestEntity>();
DoSomething((EntityFilter<IEntity>)ef); // <- casting fails
}
public static void DoSomething(EntityFilter<IEntity> someEntityFilter)
{
}
}
Visual Studio中說:
Cannot convert type 'ConsoleApplication1.EntityFilter<ConsoleApplication1.TestEntity>' to 'ConsoleApplication1.EntityFilter<ConsoleApplication1.IEntity>'
我不能轉換DoSomething的方法是通用並接受EntityFilter<T>
,因爲在我的應用程序中,在DoSomething調用時T的類型是未知的。類型將在稍後使用反射在DoSomething中確定。
如何在不使DoSomething方法爲通用的情況下將ef變量傳遞給DoSomething方法?
爲什麼你能不能創建'ef'作爲'EntityFilter'開始嗎? –
爲什麼不能使你的方法是通用的?這是正確的做法:'方法(EntityFilter ef)其中T:IEntity' –
nawfal
你是什麼意思'不起作用'?請提供有關您獲得的錯誤的信息。 – thecoop