Redmine.Net.Api.Types.TimeEntry time_entries.Issue = new IdentifiableName { Id = AddIssue.Id }; 报错如何解决 error CS0272: 属性或索引器“Identifiable<IdentifiableName>.Id”不能用在此上下文中,因为 set 访问器不可访问
时间: 2023-12-14 11:39:25 浏览: 167
这个错误是由于 `IdentifiableName` 类中的 `Id` 属性的 `set` 访问器不可访问导致的。
可以尝试检查一下 `IdentifiableName` 类中 `Id` 属性的访问修饰符是否为 `private`,如果是,则需要将其修改为 `public` 或者添加一个 `public` 的 `set` 访问器来解决该问题。
例如:
```csharp
public class IdentifiableName
{
public int Id { get; set; }
}
```
如果 `IdentifiableName` 类已经是一个第三方库或者不能修改源代码的话,可以考虑使用反射来设置 `Id` 属性的值。
例如:
```csharp
var issue = new Redmine.Net.Api.Types.TimeEntry();
var identifiableName = new IdentifiableName { Id = AddIssue.Id };
var property = identifiableName.GetType().GetProperty("Id");
property.SetValue(identifiableName, 123); // 设置 Id 属性的值
issue.Issue = identifiableName;
```
相关问题
Redmine.Net.Api.Types.TimeEntry 如何和issue关联并给出示例代码
可以使用Redmine.Net.Api.Types.TimeEntry的IssueId属性将TimeEntry与Issue关联起来。以下是一个示例代码片段,演示如何创建一个与Issue关联的TimeEntry:
```csharp
using Redmine.Net.Api;
using Redmine.Net.Api.Types;
using System;
namespace RedmineTimeEntryExample
{
class Program
{
static void Main(string[] args)
{
var redmineManager = new RedmineManager("https://your.redmine.url", "your-api-key");
// create a new time entry
var timeEntry = new TimeEntry
{
ActivityId = 9, // set the activity ID
SpentOn = DateTime.Now.Date, // set the date
Hours = 2.5F, // set the time spent
Comments = "Some comments here", // set the comments
IssueId = 123 // set the issue ID
};
// create the time entry and associate it with the issue
var createdTimeEntry = redmineManager.CreateObject<TimeEntry>(timeEntry);
Console.WriteLine("Time entry created successfully!");
}
}
}
```
在上面的代码中,我们设置了TimeEntry的IssueId属性,将其与Issue关联起来。在创建TimeEntry时,Redmine.Net.Api会自动将其与相应的Issue关联起来。
Redmine.Net.Api.Types.TimeEntry 如何获取一个Activity
要获取一个活动(Activity),可以使用 Redmine.Net.Api.Types.TimeEntry 的 Activity 属性。Activity 对象包含了活动的名称、ID、费率等信息。
以下是获取 TimeEntry 对象的 Activity 的示例代码:
```csharp
using Redmine.Net.Api;
using Redmine.Net.Api.Types;
var redmineManager = new RedmineManager(redmineUrl, apiKey);
var timeEntry = redmineManager.GetObject<TimeEntry>(timeEntryId.ToString(), new NameValueCollection { { "include", "activity" } });
var activity = timeEntry.Activity;
Console.WriteLine($"Activity name: {activity.Name}");
Console.WriteLine($"Activity ID: {activity.Id}");
```
在上面的代码中,我们使用 RedmineManager 的 GetObject 方法获取 TimeEntry 对象,并传递了一个 NameValueCollection 参数来指示我们需要包含 Activity 信息。然后,我们可以从 TimeEntry 对象的 Activity 属性中获取 Activity 对象,并访问其属性。
阅读全文