昨晚我瞭解的casting by example這個奇妙的操作:一個非常酷的方式來產生使用到現有實例的引用某種類型的集合。鑄造集合的泛型隱含
我的問題是,雖然這一工程時,明確創建實例,如果使用活化劑從類型實例收集產生的類型是不準確的。
class TestCollectionContent
{
public int id { get; private set; }
}
[Test]
public void TestListCastCreation()
{
var explicitCast = new TestCollectionContent(); //This casts as TestCollectionContent
var explicitList = MakeList (explicitCast); //This casts as List<CommandWithExecute>
explicitList.Add (new TestCollectionContent());
Type clazz = typeof(TestCollectionContent);
var implicitCast = Activator.CreateInstance (clazz);//This casts as TestCollectionContent
var implicitList = MakeList (implicitCast); //This casts as List<object>
implicitList.Add (new TestCollectionContent());
Assert.AreEqual (explicitCast.GetType(), implicitCast.GetType()); //Succeeds
Assert.AreEqual (explicitList.GetType(), implicitList.GetType()); //FAILS!
}
public static List<T> MakeList<T>(T itemOftype)
{
List<T> newList = new List<T>();
return newList;
}
爲了我的目的,收集必須正確施放。有什麼想法嗎?
請注意,我在Unity3D中使用C#(它使用類似於.Net 3.5的東西)。
我個人,我會避免這種行爲。總是更好地爲你需要的課程上課。 – gunr2171
我正在構建框架的一部分。這是不可能的(實際上,與框架的前提相反)明確指定類。 – MarcT