Sae*_*eid 2 c# generics types .net-4.0
这是我的通用类:
public class MyClass<T>
{
public T MainModel { get; set; }
public Type GetType()
{
//here
}
}
Run Code Online (Sandbox Code Playgroud)
然后我用这个形式:
List<MySecondClass> Myinstance = new List<MySecondClass>();
MyClass<IEnumerable<MySecondClass>> mainInstance = new MyClass<IEnumerable<MySecondClass>> { MainModel = Myinstance };
Run Code Online (Sandbox Code Playgroud)
所以我需要GetType()Method返回typeof(MySecondClass)你的建议是什么?
更新
我必须提一下,总是使用MyClass两种形式:第一种:我在上面和第二种中完全编码:
ThirdClass thirdone = new ThirdClass();
MyClass<ThirdClass> = new MyClass<ThirdClass>(){ MainModel = thirdone};
Run Code Online (Sandbox Code Playgroud)
T是的话List<T>// add error checking to taste
var typeOfEnumerable = typeof(T).GetInterfaces().Where(i => i.IsGenericType)
.Single(i => i.GetGenericTypeDefinition() == typeof(IEnumerable<>))
.GetGenericArguments().First();
Run Code Online (Sandbox Code Playgroud)
T是的话IEnumerable<T>// add error checking to taste
var typeOfEnumerable = typeof(T).GetGenericArguments().First();
Run Code Online (Sandbox Code Playgroud)
你真的应该考虑一下MyClass这里要做什么.为什么要T成为一个特殊情况IEnumerable<X>呢?也许应该增加一些限制T?如果没有更具体的信息,就不可能回答这些问题和其他重要问题,但你真的应该这样做.
另外,您GetType是偶然还是故意命名方法?这样隐藏真的,真的,真的不是一个好主意object.GetType,所以我建议你重命名那个方法.