无法从界面看到属性
Can't see properties from interface
我遇到了一些界面问题!
代码如下:
我希望能够通过我的测试模板访问添加的属性和 ID,但智能感知说不!
我是在滥用界面吗?我犯了一个愚蠢的错误吗?
感谢任何建议 - 这让我抓狂。
namespace blah.blah.blah
{
public interface ITrackedItem
{
DateTime Added { get; set; }
int ID { get; set; }
}
public class TestTemplate<ITrackedItem>
where ITrackedItem : new()
{
public SortedSet<ITrackedItem> Set { get; set; }
public void Test()
{
Set = new SortedSet<ITrackedItem>();
foreach (var item in Set)
{
// cannot access any properties here
// var ID = item.ID; <=============|
}
}
}
}
这是问题所在:
public class TestTemplate<ITrackedItem>
您声明了一个名为 ITrackedItem
的 类型参数 ,它与 ITrackedItem
接口完全不同。目前尚不清楚您的类型是否需要通用 - 您可以不只使用
public class TestTemplate
?如果你希望它在必须实现 ITrackedItem
的类型中是通用的,你应该使用类似的东西:
public class TestTemplate<T>
where T : ITrackedItem, new()
{
public SortedSet<T> Set { get; set; }
public void Test()
{
Set = new SortedSet<T>();
foreach (var item in Set)
{
// now you can access any properties here
//
}
}
}
我遇到了一些界面问题!
代码如下:
我希望能够通过我的测试模板访问添加的属性和 ID,但智能感知说不!
我是在滥用界面吗?我犯了一个愚蠢的错误吗?
感谢任何建议 - 这让我抓狂。
namespace blah.blah.blah
{
public interface ITrackedItem
{
DateTime Added { get; set; }
int ID { get; set; }
}
public class TestTemplate<ITrackedItem>
where ITrackedItem : new()
{
public SortedSet<ITrackedItem> Set { get; set; }
public void Test()
{
Set = new SortedSet<ITrackedItem>();
foreach (var item in Set)
{
// cannot access any properties here
// var ID = item.ID; <=============|
}
}
}
}
这是问题所在:
public class TestTemplate<ITrackedItem>
您声明了一个名为 ITrackedItem
的 类型参数 ,它与 ITrackedItem
接口完全不同。目前尚不清楚您的类型是否需要通用 - 您可以不只使用
public class TestTemplate
?如果你希望它在必须实现 ITrackedItem
的类型中是通用的,你应该使用类似的东西:
public class TestTemplate<T>
where T : ITrackedItem, new()
{
public SortedSet<T> Set { get; set; }
public void Test()
{
Set = new SortedSet<T>();
foreach (var item in Set)
{
// now you can access any properties here
//
}
}
}