本文整理汇总了C#中System.CodeDom.CodeArrayCreateExpression类的典型用法代码示例。如果您正苦于以下问题:C# CodeArrayCreateExpression类的具体用法?C# CodeArrayCreateExpression怎么用?C# CodeArrayCreateExpression使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
CodeArrayCreateExpression类属于System.CodeDom命名空间,在下文中一共展示了CodeArrayCreateExpression类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。
示例1: EmitGetFingerprint
public void EmitGetFingerprint (CodeTypeDeclaration ctd)
{
byte[] hash = Hash;
CodeArrayCreateExpression mkdata = new CodeArrayCreateExpression (CDH.Byte, hash.Length);
for (int i = 0; i < hash.Length; i++)
// well, this for loop sucks
mkdata.Initializers.Add (new CodePrimitiveExpression (hash[i]));
CodeMemberMethod m = new CodeMemberMethod ();
m.Name = "GetFingerprint";
m.Attributes = MemberAttributes.Public | MemberAttributes.Override;
m.ReturnType = CDH.Fingerprint;
m.Parameters.Add (CDH.Param (CDH.IContext, "unused1"));
m.Parameters.Add (CDH.Param (CDH.Fingerprint, "unused2"));
CodeMethodInvokeExpression invoke = new CodeMethodInvokeExpression ();
invoke.Method = new CodeMethodReferenceExpression (Generic, "Constant");
invoke.Parameters.Add (mkdata);
m.Statements.Add (new CodeMethodReturnStatement (invoke));
ctd.Members.Add (m);
}
开发者ID:emtees,项目名称:old-code,代码行数:25,代码来源:FingerprintHelper.cs
示例2: Emit
// Generates a codedom instantiation expression: new foo() or new foo[x].
public static CodeExpression Emit(Instantiation instantiation)
{
// Array instantiation needs a different treatment.
if (instantiation.IsArray)
{
var c = new CodeArrayCreateExpression();
c.CreateType = new CodeTypeReference(instantiation.Name);
c.SizeExpression = CodeDomEmitter.EmitCodeExpression(instantiation.Parameters.ChildExpressions[0]);
return c;
}
else // Non-array instantiation
{
var c = new CodeObjectCreateExpression();
// The type that is being created
var createType = new CodeTypeReference(instantiation.Name);
// Apply the generic type names, if any.
foreach (var g in instantiation.GenericTypes)
{
createType.TypeArguments.Add(new CodeTypeReference(g));
}
c.CreateType = createType;
// Translate the instantiation parameters.
foreach (var a in instantiation.Parameters.ChildExpressions)
c.Parameters.Add(CodeDomEmitter.EmitCodeExpression(a));
return c;
}
}
开发者ID:maleficus1234,项目名称:Pie,代码行数:33,代码来源:InstantiationEmitter.cs
示例3: Constructor1_Deny_Unrestricted
public void Constructor1_Deny_Unrestricted ()
{
CodeArrayCreateExpression cace = new CodeArrayCreateExpression (ctr, ce);
Assert.AreEqual ("System.Void", cace.CreateType.BaseType, "CreateType.BaseType");
Assert.AreEqual (0, cace.Initializers.Count, "Initializers");
Assert.AreEqual (0, cace.Size, "Size");
Assert.AreSame (ce, cace.SizeExpression, "SizeExpression");
}
开发者ID:nlhepler,项目名称:mono,代码行数:8,代码来源:CodeArrayCreateExpressionCas.cs
示例4: GetConcatExpression
public static CodeMethodInvokeExpression GetConcatExpression(IList<ExpressionStringToken> values)
{
var stringType = new CodeTypeReference(typeof(string));
var arrayExpression = new CodeArrayCreateExpression
{
CreateType = new CodeTypeReference("System.String", 1)
{
ArrayElementType = stringType
},
Size = 0
};
foreach (var expressionStringToken in values)
{
if (expressionStringToken.IsExpression)
{
var toStringExpression = new CodeMethodInvokeExpression
{
Method = new CodeMethodReferenceExpression
{
MethodName = "ToString",
TargetObject =
new CodeVariableReferenceExpression
{
VariableName = "Convert"
}
}
};
toStringExpression.Parameters.Add(new CodeSnippetExpression
{
Value = expressionStringToken.Value
});
arrayExpression.Initializers.Add(toStringExpression);
}
else
{
var _value3 = new CodePrimitiveExpression
{
Value = expressionStringToken.Value
};
arrayExpression.Initializers.Add(_value3);
}
}
var concatExpression = new CodeMethodInvokeExpression
{
Method = new CodeMethodReferenceExpression
{
MethodName = "Concat",
TargetObject = new CodeTypeReferenceExpression
{
Type = stringType
}
}
};
concatExpression.Parameters.Add(arrayExpression);
return concatExpression;
}
开发者ID:Jeff-Lewis,项目名称:nhaml,代码行数:58,代码来源:CodeDomClassBuilder.cs
示例5: GenerateArrayCreateExpression
//
// Methods
//
protected override void GenerateArrayCreateExpression (CodeArrayCreateExpression expression)
{
//
// This tries to replicate MS behavior as good as
// possible.
//
// The Code-Array stuff in ms.net seems to be broken
// anyways, or I'm too stupid to understand it.
//
// I'm sick of it. If you try to develop array
// creations, test them on windows. If it works there
// but not in mono, drop me a note. I'd be especially
// interested in jagged-multidimensional combinations
// with proper initialization :}
//
TextWriter output = Output;
output.Write ("new ");
CodeExpressionCollection initializers = expression.Initializers;
CodeTypeReference createType = expression.CreateType;
if (initializers.Count > 0) {
OutputType (createType);
if (expression.CreateType.ArrayRank == 0) {
output.Write ("[]");
}
OutputStartBrace ();
++Indent;
OutputExpressionList (initializers, true);
--Indent;
output.Write ("}");
} else {
CodeTypeReference arrayType = createType.ArrayElementType;
while (arrayType != null) {
createType = arrayType;
arrayType = arrayType.ArrayElementType;
}
OutputType (createType);
output.Write ('[');
CodeExpression size = expression.SizeExpression;
if (size != null)
GenerateExpression (size);
else
output.Write (expression.Size);
output.Write(']');
}
}
开发者ID:nestalk,项目名称:mono,代码行数:60,代码来源:CSharpCodeGenerator.cs
示例6: NullCreateType
public void NullCreateType ()
{
CodeArrayCreateExpression cace = new CodeArrayCreateExpression ((CodeTypeReference) null, 0);
Assert.IsNotNull (cace.CreateType, "#1");
Assert.AreEqual (typeof (void).FullName, cace.CreateType.BaseType, "#2");
cace.CreateType = null;
Assert.IsNotNull (cace.CreateType, "#3");
Assert.AreEqual (typeof (void).FullName, cace.CreateType.BaseType, "#4");
}
开发者ID:nlhepler,项目名称:mono,代码行数:10,代码来源:CodeArrayCreateExpressionTest.cs
示例7: VisitCodeArrayCreateExpression
/// <summary>
/// Visits a <see cref="CodeArrayCreateExpression"/>.
/// </summary>
/// <param name="codeArrayCreateExpression">The <see cref="CodeArrayCreateExpression"/> to visit.</param>
protected virtual void VisitCodeArrayCreateExpression(CodeArrayCreateExpression codeArrayCreateExpression)
{
if (codeArrayCreateExpression == null)
{
return;
}
this.VisitCodeTypeReference(codeArrayCreateExpression.CreateType);
this.VisitCodeExpressionCollection(codeArrayCreateExpression.Initializers);
this.VisitCodeExpression(codeArrayCreateExpression.SizeExpression);
}
开发者ID:OpenRIAServices,项目名称:OpenRiaServices,代码行数:15,代码来源:CodeDomVisitor.cs
示例8: Clone
public static CodeArrayCreateExpression Clone(this CodeArrayCreateExpression expression)
{
if (expression == null) return null;
CodeArrayCreateExpression e = new CodeArrayCreateExpression();
e.CreateType = expression.CreateType.Clone();
e.Initializers.AddRange(expression.Initializers.Clone());
e.Size = expression.Size;
e.SizeExpression = expression.SizeExpression.Clone();
e.UserData.AddRange(expression.UserData);
return e;
}
开发者ID:mgagne-atman,项目名称:Projects,代码行数:11,代码来源:CodeArrayCreateExpressionExtensions.cs
示例9: TypescriptArrayCreateExpression
public TypescriptArrayCreateExpression(
IExpressionFactory expressionFactory,
CodeArrayCreateExpression codeExpression,
CodeGeneratorOptions options,
ITypescriptTypeMapper typescriptTypeMapper)
{
_expressionFactory = expressionFactory;
_codeExpression = codeExpression;
_options = options;
_typescriptTypeMapper = typescriptTypeMapper;
System.Diagnostics.Debug.WriteLine("TypescriptArrayCreateExpression Created");
}
开发者ID:s2quake,项目名称:TypescriptCodeDom,代码行数:12,代码来源:TypescriptArrayCreateExpression.cs
示例10: MaterializeSimpleTypeDef
internal static CodeExpression MaterializeSimpleTypeDef(
ClrSimpleTypeInfo typeInfo,
Dictionary<XmlSchemaObject, string> nameMappings,
LinqToXsdSettings settings)
{
CodeObjectCreateExpression simpleTypeCreate = null;
CodeExpressionCollection expressions = null;
switch(typeInfo.Variety) {
case XmlSchemaDatatypeVariety.Atomic:
simpleTypeCreate = new CodeObjectCreateExpression(
Constants.AtomicSimpleTypeValidator);
expressions = simpleTypeCreate.Parameters;
expressions.Add(CreateGetBuiltInSimpleType(typeInfo.TypeCode));
expressions.Add(CreateFacets(typeInfo));
break;
case XmlSchemaDatatypeVariety.List:
simpleTypeCreate = new CodeObjectCreateExpression(
Constants.ListSimpleTypeValidator);
expressions = simpleTypeCreate.Parameters;
expressions.Add(CreateGetBuiltInSimpleType(typeInfo.TypeCode));
expressions.Add(CreateFacets(typeInfo));
ListSimpleTypeInfo listType = typeInfo as ListSimpleTypeInfo;
ClrSimpleTypeInfo itemType = listType.ItemType;
expressions.Add(CreateSimpleTypeDef(
itemType, nameMappings, settings, true));
break;
case XmlSchemaDatatypeVariety.Union:
simpleTypeCreate = new CodeObjectCreateExpression(
Constants.UnionSimpleTypeValidator);
expressions = simpleTypeCreate.Parameters;
expressions.Add(CreateGetBuiltInSimpleType(typeInfo.TypeCode));
expressions.Add(CreateFacets(typeInfo));
UnionSimpleTypeInfo unionType = typeInfo as UnionSimpleTypeInfo;
CodeArrayCreateExpression memberTypeCreate =
new CodeArrayCreateExpression();
memberTypeCreate.CreateType = new CodeTypeReference(
Constants.SimpleTypeValidator);
foreach (ClrSimpleTypeInfo st in unionType.MemberTypes)
{
memberTypeCreate.Initializers.Add(CreateSimpleTypeDef(
st, nameMappings, settings, true));
}
expressions.Add(memberTypeCreate);
break;
}
return simpleTypeCreate;
}
开发者ID:alcardac,项目名称:SDMXRI_WS_OF,代码行数:51,代码来源:SimpleTypeCodeDomHelper.cs
示例11: Clone
internal override CodeExpression Clone(CodeExpression expression)
{
CodeArrayCreateExpression expression2 = (CodeArrayCreateExpression) expression;
CodeArrayCreateExpression expression3 = new CodeArrayCreateExpression {
CreateType = TypeReferenceExpression.CloneType(expression2.CreateType),
Size = expression2.Size
};
if (expression2.SizeExpression != null)
{
expression3.SizeExpression = RuleExpressionWalker.Clone(expression2.SizeExpression);
}
foreach (CodeExpression expression4 in expression2.Initializers)
{
expression3.Initializers.Add(RuleExpressionWalker.Clone(expression4));
}
return expression3;
}
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:17,代码来源:ArrayCreateExpression.cs
示例12: Generate
public override void Generate(object codeObject, Entity entity)
{
base.Generate(codeObject, entity);
var attribute = (CodeAttributeDeclaration)codeObject;
var docType = (DocumentType)entity;
var info = (DocumentTypeInfo)docType.Info;
AddAttributeArgumentIfValue(attribute, "DefaultTemplate", info.DefaultTemplate);
var allowedTemplates =
info.AllowedTemplates
.NonNullOrWhiteSpace()
.AsPrimitiveExpressions();
var arrayCreateExpression = new CodeArrayCreateExpression("String", allowedTemplates);
if (allowedTemplates.Any())
AddAttributeArgument(attribute, "AllowedTemplates", arrayCreateExpression);
}
开发者ID:scy0846,项目名称:Umbraco.CodeGen,代码行数:18,代码来源:DocumentTypeInfoGenerator.cs
示例13: Generate
public CodeExpression[] Generate(Table table, HardwireCodeGenerationContext generator,
CodeTypeMemberCollection members)
{
List<CodeExpression> initializers = new List<CodeExpression>();
generator.DispatchTablePairs(table.Get("overloads").Table, members, exp =>
{
initializers.Add(exp);
});
var name = new CodePrimitiveExpression((table["name"] as string));
var type = new CodeTypeOfExpression(table["decltype"] as string);
var array = new CodeArrayCreateExpression(typeof(IOverloadableMemberDescriptor), initializers.ToArray());
return new CodeExpression[] {
new CodeObjectCreateExpression(typeof(OverloadedMethodMemberDescriptor), name, type, array)
};
}
开发者ID:InfectedBytes,项目名称:moonsharp,代码行数:19,代码来源:OverloadedMethodMemberDescriptorGenerator.cs
示例14: EmitArray
void EmitArray(CodeArrayCreateExpression array)
{
writer.Write(Parser.ArrayOpen);
bool first = true;
depth++;
foreach (CodeExpression expr in array.Initializers)
{
if (first)
first = false;
else
{
writer.Write(Parser.DefaultMulticast);
writer.Write(Parser.SingleSpace);
}
EmitExpression(expr);
}
depth--;
writer.Write(Parser.ArrayClose);
}
开发者ID:pschuegr,项目名称:IronAHK,代码行数:21,代码来源:Expression.cs
示例15: Generate
public override void Generate(object codeObject, Entity entity)
{
var contentType = (ContentType) entity;
var attribute = (CodeAttributeDeclaration) codeObject;
var structure = contentType.Structure;
if (structure.All(String.IsNullOrWhiteSpace))
return;
var typeofExpressions =
structure
.Where(allowedType => !String.IsNullOrWhiteSpace(allowedType))
.Select(allowedType => new CodeTypeOfExpression(allowedType.PascalCase()))
.Cast<CodeExpression>()
.ToArray();
var expression = new CodeArrayCreateExpression(
typeof(Type[]),
typeofExpressions
);
AddAttributeArgument(attribute, "Structure", expression);
}
开发者ID:scy0846,项目名称:Umbraco.CodeGen,代码行数:22,代码来源:StructureGenerator.cs
示例16: GenerateArrayCreateExpression
protected override void GenerateArrayCreateExpression (CodeArrayCreateExpression expression)
{
TextWriter output = Output;
output.Write ("new ");
CodeExpressionCollection initializers = expression.Initializers;
CodeTypeReference createType = expression.CreateType;
if (initializers.Count > 0) {
OutputType (createType);
if (expression.CreateType.ArrayRank == 0)
output.Write ("[]");
output.Write ('[');
++Indent;
OutputExpressionList (initializers, true);
--Indent;
output.Write (']');
} else {
CodeTypeReference arrayType = createType.ArrayElementType;
while (arrayType != null) {
createType = arrayType;
arrayType = arrayType.ArrayElementType;
}
OutputType (createType);
output.Write ('[');
CodeExpression size = expression.SizeExpression;
if (size != null)
GenerateExpression (size);
else
output.Write (expression.Size);
output.Write (']');
}
}
开发者ID:nickchal,项目名称:pash,代码行数:39,代码来源:JScriptCodeGenerator.cs
示例17: GenerateArrayCreateExpression
protected override void GenerateArrayCreateExpression(CodeArrayCreateExpression e)
{
CodeExpressionCollection initializers = e.Initializers;
// Literal array
if (initializers.Count > 0)
{
// the syntax is something like <int>{ 10,12,14 }
this.Output.Write("<");
// Is a specific type indicated ?
if (e.CreateType.ArrayElementType != null)
{
this.OutputType(e.CreateType.ArrayElementType);
}
else
{
this.OutputType(e.CreateType);
}
//
this.Output.Write(">{ ");
this.OutputExpressionList(initializers, false);
this.Output.Write(" }");
}
else
{
// Standard Array declaration
base.Output.Write(this.GetBaseTypeOutput(e.CreateType));
base.Output.Write("[");
if (e.SizeExpression != null)
{
base.GenerateExpression(e.SizeExpression);
}
else
{
base.Output.Write(e.Size);
}
base.Output.Write("]");
}
}
开发者ID:X-Sharp,项目名称:XSharpPublic,代码行数:38,代码来源:XSharpCodeGenerator.cs
示例18: AddFindByMethods
private void AddFindByMethods(CodeTypeDeclaration dataTableClass)
{
DataTable dataTable = this.designTable.DataTable;
for (int i = 0; i < dataTable.Constraints.Count; i++)
{
if ((dataTable.Constraints[i] is UniqueConstraint) && ((UniqueConstraint) dataTable.Constraints[i]).IsPrimaryKey)
{
DataColumn[] columns = ((UniqueConstraint) dataTable.Constraints[i]).Columns;
string inVarName = "FindBy";
bool flag = true;
for (int j = 0; j < columns.Length; j++)
{
inVarName = inVarName + this.codeGenerator.TableHandler.Tables[columns[j].Table.TableName].DesignColumns[columns[j].ColumnName].GeneratorColumnPropNameInRow;
if (columns[j].ColumnMapping != MappingType.Hidden)
{
flag = false;
}
}
if (!flag)
{
CodeMemberMethod method = CodeGenHelper.MethodDecl(CodeGenHelper.Type(this.rowClassName), NameHandler.FixIdName(inVarName), MemberAttributes.Public | MemberAttributes.Final);
for (int k = 0; k < columns.Length; k++)
{
method.Parameters.Add(CodeGenHelper.ParameterDecl(CodeGenHelper.Type(columns[k].DataType), this.codeGenerator.TableHandler.Tables[columns[k].Table.TableName].DesignColumns[columns[k].ColumnName].GeneratorColumnPropNameInRow));
}
CodeArrayCreateExpression par = new CodeArrayCreateExpression(typeof(object), columns.Length);
for (int m = 0; m < columns.Length; m++)
{
par.Initializers.Add(CodeGenHelper.Argument(this.codeGenerator.TableHandler.Tables[columns[m].Table.TableName].DesignColumns[columns[m].ColumnName].GeneratorColumnPropNameInRow));
}
method.Statements.Add(CodeGenHelper.Return(CodeGenHelper.Cast(CodeGenHelper.Type(this.rowClassName), CodeGenHelper.MethodCall(CodeGenHelper.Property(CodeGenHelper.This(), "Rows"), "Find", par))));
dataTableClass.Members.Add(method);
}
}
}
}
开发者ID:pritesh-mandowara-sp,项目名称:DecompliedDotNetLibraries,代码行数:36,代码来源:TableMethodGenerator.cs
示例19: StringConcat
CodeExpression StringConcat(params CodeExpression[] parts)
{
var list = new List<CodeExpression>(parts.Length);
foreach (var part in parts)
{
if (part is CodePrimitiveExpression)
{
var value = ((CodePrimitiveExpression)part).Value;
if (value is string && string.IsNullOrEmpty((string)value))
continue;
}
list.Add(part);
}
if (list.Count == 1)
return list[0];
Type str = typeof(string);
var method = (CodeMethodReferenceExpression)InternalMethods.Concat;
var all = new CodeArrayCreateExpression(str, list.ToArray());
return new CodeMethodInvokeExpression(method, all);
}
开发者ID:lnsoso,项目名称:IronAHK,代码行数:24,代码来源:Auxiliary.cs
示例20: BuildInvokeAsync
internal override CodeExpression BuildInvokeAsync (string messageName, CodeArrayCreateExpression paramsArray, CodeExpression delegateField, CodeExpression userStateVar)
{
HttpOperationBinding httpOper = OperationBinding.Extensions.Find (typeof (HttpOperationBinding)) as HttpOperationBinding;
CodeThisReferenceExpression ethis = new CodeThisReferenceExpression();
CodeExpression thisURlExp = new CodeFieldReferenceExpression (ethis, "Url");
CodePrimitiveExpression metUrl = new CodePrimitiveExpression (httpOper.Location);
CodeBinaryOperatorExpression expMethodLocation = new CodeBinaryOperatorExpression (thisURlExp, CodeBinaryOperatorType.Add, metUrl);
CodeMethodInvokeExpression inv2 = new CodeMethodInvokeExpression (ethis, "InvokeAsync");
inv2.Parameters.Add (new CodePrimitiveExpression (messageName));
inv2.Parameters.Add (expMethodLocation);
inv2.Parameters.Add (paramsArray);
inv2.Parameters.Add (delegateField);
inv2.Parameters.Add (userStateVar);
return inv2;
}
开发者ID:jjenki11,项目名称:blaze-chem-rendering,代码行数:18,代码来源:HttpSimpleProtocolImporter.cs
注:本文中的System.CodeDom.CodeArrayCreateExpression类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论