
[英]How to avoid missing assembly reference when project .shared.cs code from web to silverlight project
[英]what is best approach for dataadnotations in blazor client side? when shared project where model is , is missing assembly?
所以我有一些 blazor 客户端项目,所以我应该在共享项目中说person.cs
,这样它就可以在客户端和服务器端使用 - 按照设计,它是这样的 class 的正确位置......?
现在在客户端我有MudBlazor
作为组件库
所以现在他们可以选择根据属性在组件上自动设置标签,如下 所示 https://mudblazor.com/components/form#automatically-set-labels
所以我需要像
sharedproject/person.cs
public class person{
[Label("enter name")]
public string name {get;set;}
}
它对我大喊大叫,因为共享项目不知道这个MudBlazor LabelAttribute
那么这里最好的解决方案是什么? 在共享项目中安装 mudblazor? 这是个好选择吗? 在这种情况下还是不使用此属性? 我在客户端和服务器项目中都需要这个 class 创建第二个“派生”是选项但它与[labels]
相同 class 所以不是最好的选择恕我直言?
请告知最好的问候
一种选择是使用 IPerson 接口,它有两种实现方式,一种在客户端,另一种在服务器端。
像那样的东西
public interface IPerson {
string Name {get;set;}
}
// Implementation in client side
public class Person : IPerson {
[Label("enter name")]
public string Name {get;set;}
}
// Implementation in server side
public class Person : IPerson {
public string Name {get;set;}
}
这样,你仍然可以拥有
我认为您是对的,客户端和服务器使用的 DTO 类的正确位置是一个共享项目。
也许干净的解决方案是拥有“派生”类,但最简单的方法是在共享项目中安装 MudBlazor。 在这种情况下,您将在 API 项目中拥有这个 dll,但不需要复制所有 DTO 类。
恕我直言,MudBlazor 应该提供一个“全局”配置,您可以在其中定义是使用其自定义属性“标签”还是通用属性“显示”,这样就可以在共享项目中使用“显示”属性而无需安装 MudBlazor。
在这些主题中讨论了这一点:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.