我试图将这个Java(Android)代码转换为c#(MonoDroid),但我不明白 <Item extends OverlayItem>
public class BalloonOverlayView<Item extends OverlayItem> extends FrameLayout
Run Code Online (Sandbox Code Playgroud) 如果我有一个被限制为类型'int'的泛型方法,那么我当然应该能够将一个整数转换为泛型T类型.例如...
public T ExampleMethod<T>(int unchanged) where T : int
{
return (T)unchanged;
}
Run Code Online (Sandbox Code Playgroud)
...编译器抱怨无法将类型'int'转换为'T',但我有一个约束,表明目标是整数.那肯定应该有用吗?
更新:
实际情况是我想要一个返回枚举值的辅助方法.所以我理想的助手方法会更像这样....
public T GetAttributeAsEnum<T>(XmlReader reader, string name) where T : enum
{
string s = reader.GetAttribute(name);
int i = int.Parse(s);
return (T)i;
}
Run Code Online (Sandbox Code Playgroud)
......并像这样使用它......
StateEnum x = GetAttributeAsEnum<StateEnum>(xmlReader, "State");
CategoryEnum y = GetAttributeAsEnum<CategoryEnum>(xmlReader, "Category");
OtherEnum z = GetAttributeAsEnum<OtherEnum>(xmlReader, "Other");
Run Code Online (Sandbox Code Playgroud)
......但你无法通过枚举来约束.
使用这个有什么好处:
DataTable CopyToDataTable<T>(this IEnumerable<T> source) where T : DataRow
Run Code Online (Sandbox Code Playgroud)
你可以这样做:
DataTable CopyToDataTable<T>(this DataRow[] source)
Run Code Online (Sandbox Code Playgroud)
对不起,如果这是一个愚蠢的问题,我是新手