本文整理汇总了C#中System.CodeDom.CodeNamespace.CreateType方法的典型用法代码示例。如果您正苦于以下问题:C# CodeNamespace.CreateType方法的具体用法?C# CodeNamespace.CreateType怎么用?C# CodeNamespace.CreateType使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.CodeDom.CodeNamespace
的用法示例。
在下文中一共展示了CodeNamespace.CreateType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateInitializer
/// <summary>
/// Generates an Initializer class (a proxy that allows us to quickly construct instances of a strongly typed item wrapper without resorting to reflection)
/// </summary>
private void CreateInitializer(CodeNamespace templateNamespace, CodeTypeDeclaration concrete, ID templateId)
{
CodeTypeDeclaration initializer = templateNamespace.CreateType(MemberAttributes.Public, concrete.Name + "Initializer");
// ReSharper disable BitwiseOperatorOnEnumWithoutFlags
initializer.Attributes = MemberAttributes.Public | MemberAttributes.Final;
// ReSharper restore BitwiseOperatorOnEnumWithoutFlags
initializer.BaseTypes.Add(typeof(ITemplateInitializer));
AddGeneratedCodeAttributeToType(initializer);
var templateIdProperty = new CodeMemberProperty
{
// ReSharper disable BitwiseOperatorOnEnumWithoutFlags
Attributes = MemberAttributes.Public | MemberAttributes.Final,
// ReSharper restore BitwiseOperatorOnEnumWithoutFlags
Type = new CodeTypeReference(typeof (ID)),
Name = "InitializesTemplateId"
};
// all this for return new ID("xxxxx"); lol
templateIdProperty.GetStatements.Add(new CodeMethodReturnStatement(new CodeObjectCreateExpression(typeof(ID), new CodeSnippetExpression("\"" + templateId + "\""))));
initializer.Members.Add(templateIdProperty);
var initializerItemMethod = new CodeMemberMethod
{
Name = "CreateInstance",
// ReSharper disable BitwiseOperatorOnEnumWithoutFlags
Attributes = MemberAttributes.Public | MemberAttributes.Final,
// ReSharper restore BitwiseOperatorOnEnumWithoutFlags
ReturnType = new CodeTypeReference(typeof (IStandardTemplateItem))
};
initializerItemMethod.Parameters.Add(new CodeParameterDeclarationExpression(typeof(Item), "innerItem"));
// all this for return new ConcreteType(innerItem); lol
initializerItemMethod.Statements.Add(new CodeMethodReturnStatement(new CodeObjectCreateExpression(new CodeTypeReference(concrete.Name), new CodeVariableReferenceExpression("innerItem"))));
initializer.Members.Add(initializerItemMethod);
var initializerIndexMethod = new CodeMemberMethod
{
Name = "CreateInstanceFromSearch",
// ReSharper disable BitwiseOperatorOnEnumWithoutFlags
Attributes = MemberAttributes.Public | MemberAttributes.Final,
// ReSharper restore BitwiseOperatorOnEnumWithoutFlags
ReturnType = new CodeTypeReference(typeof(IStandardTemplateItem))
};
initializerIndexMethod.Parameters.Add(new CodeParameterDeclarationExpression(new CodeTypeReference(typeof(IDictionary<string, string>), CodeTypeReferenceOptions.GlobalReference), "searchFields"));
// all this for return new ConcreteType(searchFields); lol
initializerIndexMethod.Statements.Add(new CodeMethodReturnStatement(new CodeObjectCreateExpression(new CodeTypeReference(concrete.Name), new CodeVariableReferenceExpression("searchFields"))));
initializer.Members.Add(initializerIndexMethod);
}