本文整理汇总了C#中System.CodeDom.CodeTypeParameterCollection.Add方法的典型用法代码示例。如果您正苦于以下问题:C# CodeTypeParameterCollection.Add方法的具体用法?C# CodeTypeParameterCollection.Add怎么用?C# CodeTypeParameterCollection.Add使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.CodeDom.CodeTypeParameterCollection
的用法示例。
在下文中一共展示了CodeTypeParameterCollection.Add方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenericTypeParameters
public static CodeTypeParameterCollection GenericTypeParameters(Type t)
{
if (!t.IsGenericType) return null;
var p = new CodeTypeParameterCollection();
foreach (var genericParameter in t.GetGenericTypeDefinition().GetGenericArguments())
{
var param = new CodeTypeParameter(genericParameter.Name);
if ((genericParameter.GenericParameterAttributes &
GenericParameterAttributes.ReferenceTypeConstraint) != GenericParameterAttributes.None)
{
param.Constraints.Add(" class");
}
if ((genericParameter.GenericParameterAttributes &
GenericParameterAttributes.NotNullableValueTypeConstraint) != GenericParameterAttributes.None)
{
param.Constraints.Add(" struct");
}
var constraints = genericParameter.GetGenericParameterConstraints();
foreach (var constraintType in constraints)
{
param.Constraints.Add(
new CodeTypeReference(TypeUtils.GetParameterizedTemplateName(constraintType, false,
x => true)));
}
if ((genericParameter.GenericParameterAttributes &
GenericParameterAttributes.DefaultConstructorConstraint) != GenericParameterAttributes.None)
{
param.HasConstructorConstraint = true;
}
p.Add(param);
}
return p;
}
示例2: Constructor2
public void Constructor2 ()
{
CodeTypeParameter tp1 = new CodeTypeParameter ();
CodeTypeParameter tp2 = new CodeTypeParameter ();
CodeTypeParameterCollection c = new CodeTypeParameterCollection ();
c.Add (tp1);
c.Add (tp2);
CodeTypeParameterCollection coll = new CodeTypeParameterCollection (c);
Assert.AreEqual (2, coll.Count, "#1");
Assert.AreEqual (0, coll.IndexOf (tp1), "#2");
Assert.AreEqual (1, coll.IndexOf (tp2), "#3");
}
示例3: PopulateGenericParameters
private static void PopulateGenericParameters(IGenericParameterProvider publicType, CodeTypeParameterCollection parameters)
{
foreach (var parameter in publicType.GenericParameters)
{
if (parameter.HasCustomAttributes)
throw new NotImplementedException("Attributes on type parameters is not supported. And weird");
// A little hacky. Means we get "in" and "out" prefixed on any constraints, but it's either that
// or add it as a custom attribute, which looks even weirder
var name = parameter.Name;
if (parameter.IsCovariant)
name = "out " + name;
if (parameter.IsContravariant)
name = "in " + name;
var typeParameter = new CodeTypeParameter(name)
{
HasConstructorConstraint =
parameter.HasDefaultConstructorConstraint && !parameter.HasNotNullableValueTypeConstraint
};
if (parameter.HasNotNullableValueTypeConstraint)
typeParameter.Constraints.Add(" struct"); // Extra space is a hack!
if (parameter.HasReferenceTypeConstraint)
typeParameter.Constraints.Add(" class");
foreach (var constraint in parameter.Constraints.Where(t => t.FullName != "System.ValueType"))
{
typeParameter.Constraints.Add(CreateCodeTypeReference(constraint.GetElementType()));
}
parameters.Add(typeParameter);
}
}
示例4: AddRange_Self
public void AddRange_Self ()
{
CodeTypeParameterCollection coll = new CodeTypeParameterCollection ();
coll.Add (new CodeTypeParameter ());
Assert.AreEqual (1, coll.Count, "#1");
coll.AddRange (coll);
Assert.AreEqual (2, coll.Count, "#2");
}
示例5: Remove
public void Remove ()
{
CodeTypeParameter ctp1 = new CodeTypeParameter ();
CodeTypeParameter ctp2 = new CodeTypeParameter ();
CodeTypeParameterCollection coll = new CodeTypeParameterCollection ();
coll.Add (ctp1);
coll.Add (ctp2);
Assert.AreEqual (2, coll.Count, "#1");
Assert.AreEqual (0, coll.IndexOf (ctp1), "#2");
Assert.AreEqual (1, coll.IndexOf (ctp2), "#3");
coll.Remove (ctp1);
Assert.AreEqual (1, coll.Count, "#4");
Assert.AreEqual (-1, coll.IndexOf (ctp1), "#5");
Assert.AreEqual (0, coll.IndexOf (ctp2), "#6");
}
示例6: AddRange
public void AddRange ()
{
CodeTypeParameter tp1 = new CodeTypeParameter ();
CodeTypeParameter tp2 = new CodeTypeParameter ();
CodeTypeParameter tp3 = new CodeTypeParameter ();
CodeTypeParameterCollection coll1 = new CodeTypeParameterCollection ();
coll1.Add (tp1);
coll1.Add (tp2);
CodeTypeParameterCollection coll2 = new CodeTypeParameterCollection ();
coll2.Add (tp3);
coll2.AddRange (coll1);
Assert.AreEqual (3, coll2.Count, "#1");
Assert.AreEqual (1, coll2.IndexOf (tp1), "#2");
Assert.AreEqual (2, coll2.IndexOf (tp2), "#3");
Assert.AreEqual (0, coll2.IndexOf (tp3), "#4");
CodeTypeParameterCollection coll3 = new CodeTypeParameterCollection ();
coll3.Add (tp3);
coll3.AddRange (new CodeTypeParameter[] { tp1, tp2 });
Assert.AreEqual (3, coll2.Count, "#5");
Assert.AreEqual (1, coll2.IndexOf (tp1), "#6");
Assert.AreEqual (2, coll2.IndexOf (tp2), "#7");
Assert.AreEqual (0, coll2.IndexOf (tp3), "#8");
}
示例7: Insert
public void Insert ()
{
CodeTypeParameter tp1 = new CodeTypeParameter ();
CodeTypeParameter tp2 = new CodeTypeParameter ();
CodeTypeParameterCollection coll = new CodeTypeParameterCollection ();
coll.Add (tp1);
Assert.AreEqual (1, coll.Count, "#1");
Assert.AreEqual (0, coll.IndexOf (tp1), "#2");
coll.Insert (0, tp2);
Assert.AreEqual (2, coll.Count, "#3");
Assert.AreEqual (1, coll.IndexOf (tp1), "#4");
Assert.AreEqual (0, coll.IndexOf (tp2), "#5");
}
示例8: Add_Null
public void Add_Null () {
CodeTypeParameterCollection coll = new CodeTypeParameterCollection ();
coll.Add ((CodeTypeParameter) null);
}
示例9: FillGenericParameters
private void FillGenericParameters(CodeTypeParameterCollection codes, IEnumerable<GenericParameter> defines) {
foreach(var genericParameter in defines) {
CodeTypeParameter t = new CodeTypeParameter(genericParameter.FullName);
if(genericParameter.IsContravariant) {
t.HasConstructorConstraint = true;
}
foreach(var constraint in genericParameter.Constraints) {
t.Constraints.Add(new CodeTypeReference(constraint.FullName));
}
FillCustomAttribute(t.CustomAttributes, genericParameter.CustomAttributes);
codes.Add(t);
}
}
示例10: Rewrite
protected void Rewrite(CodeTypeParameterCollection target, CodeTypeParameterCollection source, ref bool didRewrite)
{
foreach (CodeTypeParameter item in source)
{
target.Add(this.Rewrite(item, ref didRewrite));
}
}