mirror of
https://github.com/FabInfra/capnproto-dotnetcore_Runtime.git
synced 2025-03-13 15:21:47 +01:00
35 lines
1.3 KiB
C#
35 lines
1.3 KiB
C#
|
using System;
|
|||
|
|
|||
|
namespace Capnp.Rpc
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Annotates a capability interface with its Skeleton implementation.
|
|||
|
/// </summary>
|
|||
|
[AttributeUsage(AttributeTargets.Interface, AllowMultiple = false, Inherited = true)]
|
|||
|
public class SkeletonAttribute: Attribute
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// Constructs this attribute.
|
|||
|
/// </summary>
|
|||
|
/// <param name="skeletonClass">Skeleton type. This must be a class which inherits from <see cref="Skeleton"/> and
|
|||
|
/// exposes a public parameterless constructor. Moreover, it must have same amount of generic type
|
|||
|
/// parameters like the annotated interface, with identical generic constraints.</param>
|
|||
|
/// <exception cref="ArgumentNullException"><paramref name="skeletonClass"/> is null.</exception>
|
|||
|
public SkeletonAttribute(Type skeletonClass)
|
|||
|
{
|
|||
|
if (skeletonClass == null)
|
|||
|
throw new ArgumentNullException(nameof(skeletonClass));
|
|||
|
|
|||
|
if (!typeof(Skeleton).IsAssignableFrom(skeletonClass))
|
|||
|
throw new ArgumentException("Must inherit from Skeleton");
|
|||
|
|
|||
|
SkeletonClass = skeletonClass;
|
|||
|
}
|
|||
|
|
|||
|
/// <summary>
|
|||
|
/// Gets the skeleton type.
|
|||
|
/// </summary>
|
|||
|
public Type SkeletonClass { get; }
|
|||
|
}
|
|||
|
}
|