2009-01-04 22 views
11

CodeDom ile sınıf kısıtlaması oluşturmanın bir yolu var mı?CodeDom genel tür kısıtlaması

Ben

var method = new CodeMemberMethod(); 
var genericParam = new CodeTypeParameter("InterfaceType"); 
genericParam.Constraints.Add("class"); 
method.TypeParameters.Add(genericParam); 

gibi bir şey kullandığınızda

private InterfaceType GetImpl<InterfaceType>() 
    where InterfaceType : @class 
{ 
} 

buldum en iyi çözüm sınıfının

genericParam.Constraints.Add(" class"); 

önce lider boşluk kullanmaktır gibi oluşturulan kod Çünkü Ama bu en iyi bir çözüm gibi görünüyor.

cevap

6

Bu kısıtlamayı belirtmek için hiçbir yol bulmak mümkün görünmüyor. Ne for the "struct" constraint. Için

"T: Yeni()" sınırlama this msdn example olarak CodeTypeReference kullanmak geri kalanı için bayrağı HasConstructorConstraint

kullanın.

0

Ayrıca normal boşluk yerine sıfır genişlikli boşluk ("\x200Bclass") kullanıyorum. Sonra boş dize ile son dize yerine: .Replace("\x200B", string.Empty);

İlgili konular