gpt4 book ai didi

.net - 带有接口(interface)的代码契约(Contract) : "Method Invocation skipped. Compiler will generate method invocation because the method is conditional... [...]"

转载 作者:行者123 更新时间:2023-12-04 03:41:19 30 4
gpt4 key购买 nike

晚上好,

我刚开始使用 Microsoft.Contracts(最新版本)并将其插入示例界面之上,现在它看起来像这样:

namespace iRMA2.Core.Interfaces
{
using System;
using System.Collections.Generic;
using System.ComponentModel.Composition;
using System.Diagnostics.Contracts;

/// <summary>
/// Base Interface declarations for iRMA2 Extensions
/// </summary>
[InheritedExport]
[ContractClass(typeof(IiRMA2ExtensionContract))]
public interface IiRMA2Extension
{
/// <summary>
/// Gets the name.
/// </summary>
/// <value>The name of the Extension.</value>
string Name { get; }

/// <summary>
/// Gets the description.
/// </summary>
/// <value>The description.</value>
string Description { get; }

/// <summary>
/// Gets the author of the extension. Please provide complete information to get in touch with author(s) and the corresponding department
/// </summary>
/// <value>The author of the extensions.</value>
string Author { get; }

/// <summary>
/// Gets the major version.
/// </summary>
/// <value>The major version of the extension.</value>
int MajorVersion { get; }

/// <summary>
/// Gets the minor version.
/// </summary>
/// <value>The minor version.</value>
int MinorVersion { get; }

/// <summary>
/// Gets the build number.
/// </summary>
/// <value>The build number.</value>
int BuildNumber { get; }

/// <summary>
/// Gets the revision.
/// </summary>
/// <value>The revision.</value>
int Revision { get; }

/// <summary>
/// Gets the depends on.
/// </summary>
/// <value>The dependencies to other <c>IiRMA2Extension</c> this one has.</value>
IList<IiRMA2Extension> DependsOn { get; }
}

/// <summary>
/// Contract class for <c>IiRMA2Extension</c>
/// </summary>
[ContractClassFor(typeof(IiRMA2Extension))]
internal sealed class IiRMA2ExtensionContract : IiRMA2Extension
{
#region Implementation of IiRMA2Extension

/// <summary>
/// Gets or sets the name.
/// </summary>
/// <value>The name of the Extension.</value>
public string Name
{
get
{
Contract.Ensures(!String.IsNullOrEmpty(Contract.Result<string>()));
return default(string);
}

set
{
Contract.Requires(value != null);
}
}

/// <summary>
/// Gets the description.
/// </summary>
/// <value>The description.</value>
public string Description
{
get { throw new NotImplementedException(); }
}

/// <summary>
/// Gets the author of the extension. Please provide complete information to get in touch with author(s) and the corresponding department
/// </summary>
/// <value>The author of the extensions.</value>
public string Author
{
get { throw new NotImplementedException(); }
}

/// <summary>
/// Gets the major version.
/// </summary>
/// <value>The major version of the extension.</value>
public int MajorVersion
{
get { throw new NotImplementedException(); }
}

/// <summary>
/// Gets the minor version.
/// </summary>
/// <value>The minor version.</value>
public int MinorVersion
{
get { throw new NotImplementedException(); }
}

/// <summary>
/// Gets the build number.
/// </summary>
/// <value>The build number.</value>
public int BuildNumber
{
get { throw new NotImplementedException(); }
}

/// <summary>
/// Gets the revision.
/// </summary>
/// <value>The revision.</value>
public int Revision
{
get { throw new NotImplementedException(); }
}

/// <summary>
/// Gets the Extensions this one depends on.
/// </summary>
/// <value>The dependencies to other <c>IiRMA2Extension</c> this one has.</value>
public IList<IiRMA2Extension> DependsOn
{
get
{
Contract.Ensures(Contract.Result<IList<IiRMA2Extension>>() != null);
return default(IList<IiRMA2Extension>);
}
}

#endregion
}
}

现在为什么两个 Contract.Ensures(...) 在视觉上“模糊”了,工具提示说“方法调用已跳过。编译器将生成方法调用,因为该方法是有条件的,或者它是没有实现的部分方法”,实际上是 CodeContracts输出不计算/显示它们......我在这里错过了什么和做错了什么?

-J

最佳答案

您是否为此构建定义了适当的代码协定宏?例如 CONTRACTS_FULL ?没有定义正确的宏可能会导致方法被排除在编译之外。

关于.net - 带有接口(interface)的代码契约(Contract) : "Method Invocation skipped. Compiler will generate method invocation because the method is conditional... [...]",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2436292/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com