C# 如何在C中将泛型类强制转换为泛型接口#

C# 如何在C中将泛型类强制转换为泛型接口#,c#,casting,generics,C#,Casting,Generics,根据以下定义 interface myin { int id { get; set; } } class myclass:myin { public int id { get; set; } } [Database] public sealed class SqlDataContext : DataContext, IDataContext { public SqlDataContext(string connectionString) : base(connection

根据以下定义

interface myin
{
    int id { get; set; }
}
class myclass:myin
{
    public int id { get; set; }
}
[Database]
public sealed class SqlDataContext : DataContext, IDataContext
{
    public SqlDataContext(string connectionString) : base(connectionString){}
    public ITable<IUrl> Urls
    {
        get { return base.GetTable<Url>(); }  //how to cast Table<Url> to ITable<IUrl>?
    }
    ...
}
接口myin { int id{get;set;} } 类别myclass:myin { 公共int id{get;set;} } [数据库] 公共密封类SqlDataContext:DataContext,IDataContext { 公共SqlDataContext(string connectionString):基(connectionString){} 公共可编辑URL { get{return base.GetTable();}//如何将表强制转换为ITable? } ... } 更新:

public IEnumerable<IUrl> Urls
{
    get { return base.GetTable<Url>(); }
}
公共IEnumerable URL
{
获取{return base.GetTable();}
}
所以通过使用上述方法,我没有表类相关的方法和能力。这是不是一个好的解决方案?为什么呢?

在C#3.0和odler中,这是不容易做到的——请参见C#4.0

问题是
Table
实现了
ITable
接口-这部分转换很容易。棘手的一点是将
ITable
转换为
ITable
,因为这两种类型实际上没有任何关联


在4.0之前的C#中,没有简单的方法可以做到这一点-您将明确需要为正确的泛型类型(例如,通过委托)创建一个新的
ITable
实现。在C#4.0中,只要
ITable
是一个函数,就可以进行这种转换。

谢谢,我还发现了另一种非常容易实现的方法(但我知道这不是正确的解决方案),所以我现在更新了我的问题。你能看看并告诉我你的建议是什么吗