2014-03-26 54 views
1

如何初始化傳入ID參數的T的新對象?具有泛型類型參數的對象初始值設定程序

private ICollection<T> AddRelationalData<T>(List<int> relationalDataIds) 
     where T : class, new() 
    { 
     var relationalDataCollection = new Collection<T>() 
     if (relationalDataIds != null && relationalDataIds.Count > 0) 
     { 
      foreach (var entry in relationalDataIds.Select(id => new T {Id = id})) 
      { 
       relationalDataCollection.Add(entry); 
      } 
     } 
     return relationalDataCollection; 
    } 
+0

你不能。你需要知道這裏的某種類型。只有其他方式會反射,但你不知道T是否有該屬性 –

+2

你應該使用和接口在這裏。 – VahidNaderi

+0

每個用於調用此方法的類型都有一個Id屬性,所以它不會成爲問題。我希望有一種方法可以避免反思。 – Tomas

回答

4

您應該使用一個基類,它包含所需的屬性:

public class Test 
{ 
    public int Id {get;set;} 
} 

private ICollection<T> AddRelationalData<T>(List<int> relationalDataIds) 
    where T : Test, new() 
{ 
    var relationalDataCollection = new Collection<T>() 
    if (relationalDataIds != null && relationalDataIds.Count > 0) 
    { 
     foreach (var entry in relationalDataIds.Select(id => new T {Id = id})) 
     { 
      relationalDataCollection.Add(entry); 
     } 
    } 
    return relationalDataCollection; 
} 
+0

謝謝亞歷山大! :) – Tomas

+0

確切地說,這就是我所指/暗示:) –

相關問題