本文整理汇总了C#中TypeNode.GetConstructors方法的典型用法代码示例。如果您正苦于以下问题:C# TypeNode.GetConstructors方法的具体用法?C# TypeNode.GetConstructors怎么用?C# TypeNode.GetConstructors使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TypeNode
的用法示例。
在下文中一共展示了TypeNode.GetConstructors方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Check
public override ProblemCollection Check(TypeNode type)
{
Type runtimeType = type.GetRuntimeType();
if ( IsTestFixture( runtimeType ) && !runtimeType.IsAbstract && type.IsVisibleOutsideAssembly )
{
MemberList constructors = type.GetConstructors();
for ( int i = 0; i < constructors.Length; ++i )
{
Member constructor = constructors[i];
// only examine non-static constructors
Microsoft.Cci.InstanceInitializer instanceConstructor =
constructor as Microsoft.Cci.InstanceInitializer;
if ( instanceConstructor == null )
continue;
// trigger errors for non-default constructors.
if ( ( instanceConstructor.Parameters.Length != 0 ) &&
( !instanceConstructor.IsPrivate ) )
{
Resolution resolution = GetResolution( runtimeType.Name );
Problem problem = new Problem( resolution );
base.Problems.Add( problem );
}
}
if ( base.Problems.Count > 0 )
return base.Problems;
}
return base.Check (type);
}
示例2: Check
public override ProblemCollection Check(TypeNode type)
{
if (type == null) return Problems;
if (!IsPresenterImplementation(type)) return Problems;
var basePresenter = GetBasePresenterTypeNode(type);
if (basePresenter == null)
throw new InvalidOperationException("Failed to find WebFormsMvp.Presenter`1 even though we found WebFormsMvp.IPresenter.");
var presenterBaseType = type;
// We have an extra level of base type checking here so that we skip System.Object
while (presenterBaseType.BaseType != null &&
presenterBaseType.BaseType.BaseType != null)
{
presenterBaseType = presenterBaseType.BaseType;
}
if (presenterBaseType.Template != basePresenter) return Problems;
var viewTypeFromGenericTypeArgument = presenterBaseType.TemplateArguments.Single();
var iViewType = GetIViewTypeNode(type);
if (iViewType == null)
throw new InvalidOperationException("Failed to find WebFormsMvp.IView even though we found WebFormsMvp.IPresenter.");
var badParameters = type
.GetConstructors()
.Cast<InstanceInitializer>()
.SelectMany(c => c.Parameters.Where(p => p.Type.IsAssignableTo(iViewType)))
.Where(p => p.Type != viewTypeFromGenericTypeArgument);
foreach(var param in badParameters)
{
Problems.Add(new Problem(GetResolution(new[]
{
type.Name.Name,
viewTypeFromGenericTypeArgument.Name.Name,
param.Type.Name.Name
}),
param)
{
Certainty = 100,
FixCategory = FixCategories.NonBreaking,
MessageLevel = MessageLevel.Error
});
}
return Problems;
}
示例3: hasConstructorAcceptingDelay
/// <summary>
/// See if any of the constructors of a given type (possibly) accepts a delayed parameter.
/// If a class is not sealed, it may have a derived class that, for example, has a constructor
/// accepting a delayed parameter.
/// We conservatively consider this case as "may have" and return true.
/// </summary>
/// <param name="t"></param>
/// <returns></returns>
private bool hasConstructorAcceptingDelay(TypeNode t) {
MemberList ml = t.GetConstructors();
if (!t.IsSealed) return true;
if (ml.Count == 0) return false;
foreach (Member m in ml) {
if (m is InstanceInitializer) {
InstanceInitializer ii = m as InstanceInitializer;
ParameterList pl = ii.Parameters;
foreach (Parameter p in pl) {
if (p is This) continue; // will "this" show up here?
if (p.IsUniversallyDelayed) {
return true;
}
}
// no need to look at base types
/*
TypeNode parentType = t.BaseType;
while (parentType != null) {
if (hasConstructorAcceptingDelay(parentType)) {
return true;
}
parentType = parentType.BaseType;
}
*/
}
}
return false;
}
示例4: TypeHasNoVisibleConstructorsOrIsAbstract
public virtual bool TypeHasNoVisibleConstructorsOrIsAbstract(TypeNode type, TypeNode referringType){
if (type == null || referringType == null || type.IsAbstract) return true;
if (type is Struct || type is EnumNode) return false;
TypeNode dummy = referringType;
MemberList constructors = type.GetConstructors();
for (int i = 0, n = constructors == null ? 0 : constructors.Count; i < n; i++){
Member constr = constructors[i];
if (constr == null) continue;
if (!Checker.NotAccessible(constr, ref dummy, referringType.DeclaringModule, referringType, null)) return false;
}
return true;
}
示例5: GetConstructors
protected virtual Overloads GetConstructors(int line, int col, TypeNode type){
Node node;
Scope scope;
int identContext;
this.languageService.SearchForNodeAtPosition(line+1, col+1, out node, out scope, out identContext);
TypeNode referringType = null;
Module referringModule = null;
while (scope != null){
TypeScope tScope = scope as TypeScope;
if (tScope != null){
referringType = tScope.Type;
if (referringType != null){
referringModule = referringType.DeclaringModule;
break;
}
}
NamespaceScope nScope = scope as NamespaceScope;
if (nScope != null){
referringModule = nScope.AssociatedModule;
break;
}
scope = scope.OuterScope;
}
bool showPrivate = referringType == type;
bool showFamily = referringType != null && referringType.IsAssignableTo(type);
bool showInternal = this.MayAccessInternals(referringType, type) || this.MayAccessInternals(referringModule, type);
Member selectedMember = this.GetMember(line, col);
MemberList members = type == null ? null : type.GetConstructors();
int positionOfSelectedMember = 0;
MemberList filteredMembers = new MemberList();
if (type != null && type.IsValueType){
//Add dummy default constructor
InstanceInitializer cons = new InstanceInitializer(type, null, null, null);
cons.Flags |= MethodFlags.Public;
filteredMembers.Add(cons);
}
for (int i = 0, n = members == null ? 0 : members.Count; i < n; i++){
Method meth = members[i] as Method;
if (meth == null) continue;
if (meth.IsCompilerControlled) continue;
if (meth.IsPrivate && !showPrivate) continue;
if ((meth.IsFamily || meth.IsFamilyAndAssembly) && !showFamily) continue;
if ((meth.IsAssembly || meth.IsFamilyOrAssembly) && !showInternal) continue;
if (meth == selectedMember) positionOfSelectedMember = filteredMembers.Count;
filteredMembers.Add(meth);
}
if (filteredMembers.Count == 0) return null;
return new Overloads(filteredMembers, scope, positionOfSelectedMember, this.helper, OverloadKind.Constructors);
}