2016-01-12 57 views
-2

我有一個函數,它需要一個對象參數說實體並返回像下面這樣的具體對象。具體對象從IEntity繼承。替代方法返回具體對象

 public IEntity GetEntity(object entity) 
     { 
      if(entity is A) { .... return new Customer(); } 
      else if(entity is B) {... return new Invoice(); } 
      ....... 
     } 

這顯然作品,但我想知道,這是最好的辦法還是有其他的替代,並建議從建築角度來看呢?

謝謝!

+1

要確定正確的方法,你需要解釋爲什麼你必須擺在首位此方法。 – CodeCaster

+1

@DeepakAgarwal'Activator.CreateInstance(entity.GetType());'可以更準確地寫出上面的代碼。 – tchelidze

+1

爲什麼你甚至需要這個?我懷疑這種架構關注是驅使這種方法的需要,而不是方法本身。 – David

回答

1

你可以使用泛型:

public IEntity GetEntity<T>(T entity) 
    where T : IEntity, new() 
{ 
    return new T(); 
} 
+3

這是或不是有效的方法取決於OP如何調用此代碼。這就是爲什麼這個問題目前太寬泛,不應該回答;我可以想到20種可能的方法,所有這些方法都可以或不可以與OP相關 - 我們需要更多的投入。 – CodeCaster

+1

如果消費代碼只知道該類型是一個'object',那麼這不會導致Object的新實例? – David

+1

@大衛不,你不能用'object'引用來調用它,因爲'object!:IEntity'。 – CodeCaster