本文整理汇总了C#中System.RuntimeType.GetGenericTypeDefinition方法的典型用法代码示例。如果您正苦于以下问题:C# RuntimeType.GetGenericTypeDefinition方法的具体用法?C# RuntimeType.GetGenericTypeDefinition怎么用?C# RuntimeType.GetGenericTypeDefinition使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.RuntimeType
的用法示例。
在下文中一共展示了RuntimeType.GetGenericTypeDefinition方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetCustomAttributes
[System.Security.SecurityCritical] // auto-generated
internal static Attribute[] GetCustomAttributes(RuntimeType type, RuntimeType caType, bool includeSecCa, out int count)
{
Contract.Requires(type != null);
Contract.Requires(caType != null);
count = 0;
bool all = caType == (RuntimeType)typeof(object) || caType == (RuntimeType)typeof(Attribute);
if (!all && s_pca.GetValueOrDefault(caType) == null && !IsSecurityAttribute(caType))
return new Attribute[0];
List<Attribute> pcas = new List<Attribute>();
Attribute pca = null;
#if FEATURE_SERIALIZATION
if (all || caType == (RuntimeType)typeof(SerializableAttribute))
{
pca = SerializableAttribute.GetCustomAttribute(type);
if (pca != null) pcas.Add(pca);
}
#endif
if (all || caType == (RuntimeType)typeof(ComImportAttribute))
{
pca = ComImportAttribute.GetCustomAttribute(type);
if (pca != null) pcas.Add(pca);
}
if (includeSecCa && (all || IsSecurityAttribute(caType)))
{
if (!type.IsGenericParameter && type.GetElementType() == null)
{
if (type.IsGenericType)
type = (RuntimeType)type.GetGenericTypeDefinition();
object[] securityAttributes;
GetSecurityAttributes(type.Module.ModuleHandle.GetRuntimeModule(), type.MetadataToken, false, out securityAttributes);
if (securityAttributes != null)
foreach (object a in securityAttributes)
if (caType == a.GetType() || a.GetType().IsSubclassOf(caType))
pcas.Add((Attribute)a);
}
}
count = pcas.Count;
return pcas.ToArray();
}
示例2: GetUnitySerializationInfo
internal static void GetUnitySerializationInfo(SerializationInfo info, RuntimeType type)
{
if (type.GetRootElementType().IsGenericParameter)
{
type = AddElementTypes(info, type);
info.SetType(typeof(UnitySerializationHolder));
info.AddValue("UnityType", GenericParameterTypeUnity);
info.AddValue("GenericParameterPosition", type.GenericParameterPosition);
info.AddValue("DeclaringMethod", type.DeclaringMethod, typeof(MethodBase));
info.AddValue("DeclaringType", type.DeclaringType, typeof(Type));
return;
}
int unityType = RuntimeTypeUnity;
if (!type.IsGenericTypeDefinition && type.ContainsGenericParameters)
{
// Partial instantiation
unityType = PartialInstantiationTypeUnity;
type = AddElementTypes(info, type);
info.AddValue("GenericArguments", type.GetGenericArguments(), typeof(Type[]));
type = (RuntimeType)type.GetGenericTypeDefinition();
}
GetUnitySerializationInfo(info, unityType, type.FullName, type.GetRuntimeAssembly());
}
示例3: GetCustomAttributes
internal static object[] GetCustomAttributes(RuntimeType type, RuntimeType caType, bool inherit)
{
if (type.GetElementType() != null)
{
if (!caType.IsValueType)
{
return (object[]) Array.CreateInstance(caType, 0);
}
return new object[0];
}
if (type.IsGenericType && !type.IsGenericTypeDefinition)
{
type = type.GetGenericTypeDefinition() as RuntimeType;
}
int count = 0;
Attribute[] sourceArray = PseudoCustomAttribute.GetCustomAttributes(type, caType, true, out count);
if (!inherit || (caType.IsSealed && !GetAttributeUsage(caType).Inherited))
{
object[] objArray = GetCustomAttributes(type.Module, type.MetadataToken, count, caType);
if (count > 0)
{
Array.Copy(sourceArray, 0, objArray, objArray.Length - count, count);
}
return objArray;
}
List<object> derivedAttributes = new List<object>();
bool mustBeInheritable = false;
Type elementType = (((caType == null) || caType.IsValueType) || caType.ContainsGenericParameters) ? typeof(object) : caType;
while (count > 0)
{
derivedAttributes.Add(sourceArray[--count]);
}
while ((type != typeof(object)) && (type != null))
{
object[] objArray2 = GetCustomAttributes(type.Module, type.MetadataToken, 0, caType, mustBeInheritable, derivedAttributes);
mustBeInheritable = true;
for (int i = 0; i < objArray2.Length; i++)
{
derivedAttributes.Add(objArray2[i]);
}
type = type.BaseType as RuntimeType;
}
object[] destinationArray = Array.CreateInstance(elementType, derivedAttributes.Count) as object[];
Array.Copy(derivedAttributes.ToArray(), 0, destinationArray, 0, derivedAttributes.Count);
return destinationArray;
}
示例4: GetCustomAttributes
internal static Attribute[] GetCustomAttributes(RuntimeType type, Type caType, bool includeSecCa, out int count)
{
ASSERT.PRECONDITION(type != null);
ASSERT.PRECONDITION(caType != null);
count = 0;
bool all = caType == typeof(object) || caType == typeof(Attribute);
if (!all && s_pca[caType] == null && !IsSecurityAttribute(caType))
return new Attribute[0];
List<Attribute> pcas = new List<Attribute>();
Attribute pca = null;
if (all || caType == typeof(SerializableAttribute))
{
pca = SerializableAttribute.GetCustomAttribute(type);
if (pca != null) pcas.Add(pca);
}
if (all || caType == typeof(ComImportAttribute))
{
pca = ComImportAttribute.GetCustomAttribute(type);
if (pca != null) pcas.Add(pca);
}
if (includeSecCa && (all || IsSecurityAttribute(caType)))
{
if (!type.IsGenericParameter)
{
if (type.IsGenericType)
type = (RuntimeType)type.GetGenericTypeDefinition();
object[] securityAttributes;
GetSecurityAttributes(type.Module.ModuleHandle, type.MetadataToken, out securityAttributes);
if (securityAttributes != null)
foreach(object a in securityAttributes)
if (caType == a.GetType() || a.GetType().IsSubclassOf(caType))
pcas.Add((Attribute)a);
}
}
count = pcas.Count;
return pcas.ToArray();
}
示例5: GetCustomAttributes
internal static Attribute[] GetCustomAttributes(RuntimeType type, RuntimeType caType, bool includeSecCa, out int count)
{
count = 0;
bool flag = (caType == ((RuntimeType) typeof(object))) || (caType == ((RuntimeType) typeof(Attribute)));
if ((!flag && (s_pca.GetValueOrDefault(caType) == null)) && !IsSecurityAttribute(caType))
{
return new Attribute[0];
}
List<Attribute> list = new List<Attribute>();
Attribute item = null;
if (flag || (caType == ((RuntimeType) typeof(SerializableAttribute))))
{
item = SerializableAttribute.GetCustomAttribute(type);
if (item != null)
{
list.Add(item);
}
}
if (flag || (caType == ((RuntimeType) typeof(ComImportAttribute))))
{
item = ComImportAttribute.GetCustomAttribute(type);
if (item != null)
{
list.Add(item);
}
}
if ((includeSecCa && (flag || IsSecurityAttribute(caType))) && (!type.IsGenericParameter && (type.GetElementType() == null)))
{
object[] objArray;
if (type.IsGenericType)
{
type = (RuntimeType) type.GetGenericTypeDefinition();
}
GetSecurityAttributes(type.Module.ModuleHandle.GetRuntimeModule(), type.MetadataToken, false, out objArray);
if (objArray != null)
{
foreach (object obj2 in objArray)
{
if ((caType == obj2.GetType()) || obj2.GetType().IsSubclassOf(caType))
{
list.Add((Attribute) obj2);
}
}
}
}
count = list.Count;
return list.ToArray();
}