我需要使用classes
从inherit
制作部分Interface
generic field
像那样
public Interface ICommon<Ttype>
{
Ttype Filed{get;set;}
}
public Class class1:Icommon<int>
{
int Filed{get;set;}
}
public Class class2:Icommon<double>
{
double Filed{get;set;}
}
我创建了一个使用类generic class with constraints
和class1
的{{1}}进行类似的操作:
class2
每次我使用public Class GenericClass<Ttype,Tcommon> where Ttype:ICommon<Tcommon>
{
//forexample
public Ttype someOperation(Ttype x)
{
var a=x.Field;
//.............
}
}
时,我都必须知道我使用的GenericClass
或type of Field
类class1
才能传递它以匹配{ {1}}
有没有办法像这样写class2
:
generic constraint
写GenericClass
而没有public Class GenericClass<Ttype,Tcommon> where Ttype:**ICommon**
{
//forexample
public Ttype someOperation(Ttype x)
{
var a=x.Field;
//.............
}
}
??
更新
或如何修改ICommon
<TCommon>
就像那样
ICommon
答案 0 :(得分:1)
简短回答是:不。
您需要告诉编译器类型的泛型参数。
实际上,GenericClass<int>
和GenericClass<string>
是CLR中的两个不同类。
答案 1 :(得分:1)
我希望我明白你打算做什么:
public interface ICommon<T>
{
T Field { get; set; }
}
public class GenericClass<T>
{
public ICommon<T> SomeOperation(ICommon<T> x)
{
// do your stuff
}
}