我想使用一些(我认为是)简单的泛型来强制实施对一些业务类的CRUD操作。
例如:
它可以编译通过,但它并没有实现我想要的功能!另外,这个:
所有的签名都不同!我在这里漏掉了什么?
public interface IReadable <T>
{
T Read<T>(string ID);
}
然后,也许我可以使用NoteAdapter来对Note类进行增删改查(CRUD)操作。
public class NoteAdapter : IReadable<Note>
{
public Note Read<Note>(string ID) {
return new Note();
}
}
但出于某种原因,编译器会混淆同时有泛型返回类型和使用相同泛型类型参数化的函数,例如:
public interface IReadable <T>
{
void Read<T>(string ID);
}
public class NoteAdapter : IReadable<Note>
{
public void Read<Note>(string ID) {
return new Note();
}
}
它可以编译通过,但它并没有实现我想要的功能!另外,这个:
public interface IReadable <T>
{
T Read (string ID);
}
public class NoteAdapter : IReadable<Note>
{
public Note Read(string ID) {
return new Note();
}
}
虽然这种方法也能正常工作,但它并不能满足要求!--为什么? 因为我无法创建一个类来实现一组这些接口, 例如:
public interface IReadable <T>{
T Read (string ID);
}
public class UniversalAdapter : IReadable<Note>, IReadable<Customer> ...
{
public Note Read(string ID) {
return new Note();
}
public Customer Read(string ID) {
return new Customer();
}
}
因为返回类型不是方法签名的一部分,所以这段代码将无法编译!
我认为,在C#3.5+中可以实现。
T Foo(T t);
T Foo<T> (T t);
T Foo(<SomeType> someInstance);
所有的签名都不同!我在这里漏掉了什么?